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