在同一个头文件中声明,初始化和使用全局变量

时间:2011-06-29 18:31:28

标签: c

我实际上是在尝试使用在头文件(比如x.h)中初始化的变量,并希望在同一个头文件中的内联代码中使用相同的变量。在另一个文件(例如y.c)中修改相同的变量。我怎样才能做到这一点 ?我想知道这样做的好方法。

2 个答案:

答案 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文件。