【发布时间】:2010-03-25 20:52:02
【问题描述】:
// 文件:foo.c
static int var;
void foo()
{
var++;
}
// foo.c 文件结束
// 文件 bar.c:
static int var;
void bar()
{
var++;
}
// 文件 bar.c 结束
// 文件 main.c
static int var;
void main()
{
foo();
bar();
printf("%d", var);
}
// 文件 main.c 结束
问题:上面的程序可以编译吗?如果是这样,结果会怎样?
我测试了代码,发现它无法编译。我尝试在 main.c 中使用 extern 来使用函数 foo() 和 bar() 但仍然无法编译。
【问题讨论】:
-
@nvl:应该为零。正确分隔文件。
-
您需要发布 (a) 用于尝试构建它的命令以及 (b) 从编译器和/或链接器获得的错误消息
-
@Isak:为什么这对这种情况很重要。没有人为 OP 编写代码。我认为帮助人们开始编译他们的代码是完全可以的。否则,他们还能如何尝试编写自己的程序?
-
@nvl:因为
var是静态的,因此应该是每个文件的本地文件。因此,main.c 中的var应该与foo和bar保持一致,因为它们都有自己的var变量。这也是我从 GCC 4.2.1 得到的行为。 -
@nvl:为什么在地球上你想这样做?
标签: c