我实际上是在尝试使用在头文件(比如x.h)中初始化的变量,并希望在同一个头文件中的内联代码中使用相同的变量。在另一个文件(例如y.c)中修改相同的变量。我怎样才能做到这一点 ?我想知道这样做的好方法。
答案 0 :(得分:7)
使用extern
保留字。
永远不要在'.h'文件中创建变量,这是一个导致错误的不良做法。相反,在需要使用它们的地方将它们声明为extern
,并将变量本身仅在单个“.c”文件中声明,它将被实例化,并链接到您使用它的所有其他位置。
答案 1 :(得分:6)
您可以将头文件中的全局变量声明为extern
,然后在代码模块(即“.c”文件)中定义它。这样,您最终不会遇到链接器抛出的多个定义错误。
例如,在您的头文件中,名为int
的全局可用my_global_var
将在.h文件中具有如下声明:
extern int my_global_var;
然后在单个.c文件中的某个地方定义并初始化它:
int my_global_var = 0;
现在,您可以在包含相应头文件的任何其他代码模块中使用my_global_var
,并链接到包含全局变量定义的正确.c文件。