以下是如何定义全局变量。众所周知,全局变量应该是得到内存分配且可以被
其他模块通过 语言中 关键字调用的变量。因此,必须在 和 文
件中定义。这种重复的定义很容易导致错误。
!"#$!
%&'(!)*+! ,$*!-,(!%.
以下讨论的方法只需用在头文件中定义一次。虽然有点不易懂,但用户一旦掌握,使用起来却很灵活。表
1.2 中的定义出现在定义所有全局变量的.H 头文件中。
程序清单 /定义全局宏。
01-2
0134
0+
0134
0
.H 文件中每个全局变量都加上了 xxx_EXT 的前缀。xxx 代表模块的名字。该模块的.C 文件中有以下定义:
01-2
0#$#$+5
当编译器处理 文件时,它强制 134(在相应 文件中可以找到)为空,
(因为 1-2 已经定义)。所以编译器给每个全局变量分配内存空间,
而当编译器处理其他 文件时,1-2 没有定义,134 被定义为
,这样用户就可以调用外部全局变量。
为了说明这个概念,可以参见 uC/OS_II.H,其中包括以下定义:
0-1-2
0-134
0+
0-134
0
6
-134784%66666-79
-134784%666666-7:$9
-134784%666666-7;9
同时,uCOS_II.H 有中以下定义: