C语言在头文件中定义全局变量

 2024-01-22 01:01:21  阅读 0

通常,全局变量在 C 文件中定义并在头文件中声明。 但是,如果我们定义的全局变量需要被很多C文件使用,那么在头文件中定义全局变量会方便很多。 这是如何实现的?

.c文件内容

1 #define OS_GLOBALS
2 #include “os.h”

os.h文件内容

1 #ifdef OS_GLOBALS
2 #define OS_EXT
3 #else
4 #define OS_EXT extern
5 #endif

os.h中定义了很多全局变量,但是os.h需要被很多C文件调用。 如果不做特殊处理,会出现多次定义全局变量的错误。 为了在os.h中定义全局变量,在os.h的开头,添加上面os.h文件内容中的宏定义,并在全局变量前面添加“”,然后定义一个单独的. c文件,然后包含os.h,并且只在这个文件中定义宏“”,在包含os.h的其他文件中不定义宏“”。 然后在编译时,只有.c中的os.h中的全局变量扩展为空,其他文件包括 os.h中的全局变量前面扩展为,即声明,而不是定义,从而实现了定义os.h 中的全局变量。

os.h是uC/OS-III的通用头文件,定义了很多全局变量,这个头文件会被很多C文件调用。 为了防止重复定义全局变量的问题,采用了上述方法。 ,即创建一个单独的C文件.c,然后在这个C文件中定义这个宏,然后包含os.h头文件。 那么只有在编译.c的时候,定义了os.h中的全局变量,声明了其他c文件中的os.h中的变量,因为我们不会在其他C文件中定义这个宏。

标签: 定义 变量 全局

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码