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

一个.c文件中声明全局变量的结构体,另一个.c的文件中调用函数修改它_百度知道,第1张

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


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

    | 浏览次数:1326次

    结构体:
    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;也不行..

    我来帮他解答


       








    2011-9-4 00:09

    

    满意回答

    应该分为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);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2084792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-07-22
下一篇 2022-07-22

发表评论

登录后才能评论

评论列表(0条)

保存