2017-01-23 142 views
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应该重新定义,是不是?

回答

-1

变量是本地阻止它是在defined.Once块代码被执行变量超出scope.In您的箱子首先它是一个内部function.Thus限定的定义globally.In第二种情况下,编译器都a在两种情况下都不相同。

+0

“在第二种情况下,它是在函数内部定义的”。不,它不是。他们都是全球性的。 – kaylum

相关问题