0
我创建一个简单的test.c
文件:为什么编译器不抱怨变量被重新定义?
#include <stdio.h>
int a;
int a = 100;
void printA(void)
{
printf("a is %d\n", a);
}
编译生成目标文件:
$ gcc -c test.c
$
这是OK!但根据我的理解,变量a
应该重新定义,是不是?
我创建一个简单的test.c
文件:为什么编译器不抱怨变量被重新定义?
#include <stdio.h>
int a;
int a = 100;
void printA(void)
{
printf("a is %d\n", a);
}
编译生成目标文件:
$ gcc -c test.c
$
这是OK!但根据我的理解,变量a
应该重新定义,是不是?
变量是本地阻止它是在defined.Once块代码被执行变量超出scope.In您的箱子首先它是一个内部function.Thus限定的定义globally.In第二种情况下,编译器都a在两种情况下都不相同。
“在第二种情况下,它是在函数内部定义的”。不,它不是。他们都是全球性的。 – kaylum