一个.c文件中声明全局变量的结构体,另一个.c的文件中调用函数修改它

结构体:structmotor{INT16Sgoal_speed;//INT16Scurrent_speed;//};externstructmotorX,Y;//全局变... 结构体:
struct motor
{
INT16S goal_speed;//
INT16S current_speed;//
};
extern struct motor X,Y;//全局变量

调用函数:refresh_status(&X);
函数:
void refresh_status(struct motor *ptr);//状态刷新函数
{
INT16S i;
i=ptr->goal_speed - ptr->current_speed;//这里做减法运算
}
麻烦大家看下哪里出问题了呢?谢谢了!
换成i=X.goal_speed - X.current_speed;也不行..
展开
 我来答
Snelgar_Wang
推荐于2018-03-20 · TA获得超过1386个赞
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:82.7万
展开全部
应该分为3个文件,一个头文件存储结构体定义供其它.c文件使用,一个.c文件中定义全局变量,另一个.c文件中声明使用全局变量,并通过函数修改该全局变量

a.h //存放结构体定义
#ifndef _A_H
#define _A_H 1
struct motor
{
INT16S goal_speed;//
INT16S current_speed;//
};
#endif

def.c //文件用来定义全局变量(注意不是声明,定义是要分配内存的)
#include "a.h"
struct motor mymotor;
//加入其它处理代码

call.c //用来实现操作全局变量的函数
#include "a.h"
extern struct motor mymotor; //这是引用外部变量的前置声明,否则直接使用单独编译该文件时会提示变量未定义
void refresh_status(struct motor *ptr);//状态刷新函数
{
INT16S i;
i=ptr->goal_speed - ptr->current_speed;//这里做减法运算
}

调用方式
refresh_status(&mymotor);
fox000002
2011-09-03 · TA获得超过3823个赞
知道大有可为答主
回答量:2356
采纳率:97%
帮助的人:1145万
展开全部
1 没有定义结构体变量

结构体类型声明和变量声明可以写到头文件中

需要在 .c 文件中定义变量

struct motor X,Y;//全局变量

2 没有结构体类型声明,可以包含一下结构体声明的头文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式