2017-01-23 90 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

相關問題