【发布时间】:2013-03-27 21:15:04
【问题描述】:
这在文字中很难解释,所以我举个例子。
//f1.c
int a = 5;
int main()
{
printf("func2() output is: %i\n", func2() );
return 0;
}
//f2.c
static int a = 3
int func2()
{
extern int a;
return a;
}
当我编译并运行它时,我得到 3,而我期待 5。谁能向我解释为什么我得到 3?我原以为通过在函数中使用 extern,它不会使用静态变量的值。
【问题讨论】:
-
好吧,因为标准是这样定义的。