在头文件中声明一个extern变量

时间:2015-03-18 22:30:16

标签: c++ c extern

我在我的主。 h 标题文件中声明了一个extern 全局变量,如下所示:

extern int variable;

然后,我在main。 c 文件中定义了相同的全局变量,如下所示:

int variable = 16;

问题是我正在使用另一个名为 test.c 的文件,并且我在其中包含了main。 h 标头。但我无法访问" 16 "我在main中定义了extern的值。 c 。当我打电话给"变量"在 test.c 中,"变量"的值是" 0 "。不应该包含我的主。 h 标题的任何.c文件都可以访问" 16 "因为我已经定义了我的"变量"在主内部。 c ???

由于

2 个答案:

答案 0 :(得分:1)

当您收录main.h头文件时,该文件的副本将包含在main.c程序中。

当您更改为main.c文件时,它不会影响原始文件。因此该值不会影响原始文件,并且当您在test.c文件中再次包含该文件时。

然后main.h的副本将添加到test.c文件

答案 1 :(得分:1)

您只是在程序中包含main.h文件。 当你在main.c中包含变量时,变量将是16,并且值将在main.h中更新。 但是当你编译test.c时,变量的值最初会为0。 因此,当您打印该值时,它将为0。

main.c和test.c将在两个单独的进程中执行,因此如果main.c中的值发生更改,则test.c进程中不会更新。

只有在单个流程中,才会更新该值。