假设我声明了以下变量:
int num;
num = 0;
int main(void)
{
/* ... */
exit(EXIT_SUCCESS);
}
编译器会抱怨num
未声明,并且默认会输入int
。当我一步到位时,就不会发生这种情况:
int num = 0;
或者如果我将作业移到main()
:
int main(void)
{
num = 0;
/* ... */
exit(EXIT_SUCCESS);
}
我曾经读过这种行为的解释,但我再也找不到了。有人可以再次更新我。
我正在编译
gcc -std=c11 -O2 -g -pedantic -Wall -c -fmessage-length=0 -v
答案 0 :(得分:5)
num = 0;
是一个只能存在于函数内部的语句。它不可能存在于全球范围内。
如果你在一个函数之外放一个语句,那就错了,不允许。简单地认为,如果你在所有函数之外有一个语句,在全局范围内,何时以及如何执行该语句?所以,这是错误的。
特殊情况下,允许以int num = 0;