首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 其他 > 教大家一个如何在头文件中定义全局变量的方法

教大家一个如何在头文件中定义全局变量的方法

  • 资源大小:0.3 MB
  • 上传时间:2021-08-30
  • 下载次数:0次
  • 浏览次数:20次
  • 资源积分:1积分
  • 标      签: C文件

资 源 简 介

通常情况下,都是在C文件中定义全局变量,在头文件中声明,但是,如果我们定义的全局变量需要被很多的C文件使用的话,那么将全局变量定义在头文件里面会方便很多,那到底是如何实现的?   os_var.c文件内容   #define OS_GLOBALS   /*   * os.h中定义很多的全局变量,但是os.h又需要被很多的c文件调用,如果不特殊处理的话,会出现全局变量多次定义的错误,   * 为了实现在os.h中定义全局变量,在os.h的开头加入以下宏定义,且在全局变量前面都加上“OS_EXT”   * #ifdef OS_GLOBALS   * #define OS_EXT   * #else   * #define OS_EXT extern   * #endif   * 然后单独定义一个os_var.c文件,然后包含os.h,且只在这个文件里面定义宏“OS_GLOBALS”,在其他包含os.h的文件中   * 都不定义宏“OS_GLOBALS”,那么在编译的时候,只有os_var.c里面的os.h里面的全局变量前面的OS_EXT才展开为空,其他   * 文件中包含的os.h中的全局变量前面的OS_EXT就展开为extern,即声明,而不是定义,这样就实现了在os.h中定义全局变量。   */   #include “os.h”   os.h是uC/OS-III的总的头文件,里面定义了很多的全局变量,而且这个头文件会被很多的C文件调用,为了防止重复定义全局变量的问题,故采取了上面的方法,即单独新建一个C文件os_var.c,然后在这个C文件里面定义OS_GLOBALS这个宏,然后再包含os.h这个头文件。那么只有在编译os_var.c的时候,os.h里面的全局变量才是定义,其它c文件里面的os.h的变量都是声明,因为其它C文件我们不会定义OS_GLOBALS这个宏。
VIP VIP