共有三个文件: source1.c source2.c header.h
这两个源文件包括标题。
这是标题的代码:
struct
{
int a;
int b
} x;
现在发生的情况是该结构变为全局结构,两个源文件现在共享名为 x 的结构。为什么会这样?
我知道,如果您编写以下代码,它将生成两个全局变量。每个源文件一个。(他们不共享全局变量)
int x = 0;
最后一段代码对我来说很有意义,但我真的不明白带有结构的那个..
编辑:
嗯,这里的每个人都认为我应该得到链接器错误。我当前的代码用于嵌入式系统(nxtOSEK)。稍后我将尝试将其转换为常规 C 程序。
编辑编辑:
我回来了常规 C 中的示例。正如您所看到的,不仅可以使用结构,还可以使用常规变量。
源1.c
#include "header.h"
int main(void)
{
f();
x = 1;
f();
}
源代码2.c
#include "header.h"
void f()
{
printf("source2: %i\n", x);
}
头文件.h
#include <stdio.h>
int x;
输出
source2: 0
source2: 1
请注意,不能声明 x 以使其正常工作,否则它会像这里的每个人所说的那样给出链接器错误。(我不知道为什么它适用于嵌入式系统..)
看起来我也误读了 Eric Postpischil 的答案,看起来是正确的。