我跑一起編譯爲以下代碼:gcc A.c B.c -o combined
EXTERN在多個文件和可能的雙重定義
程序A:
#include<stdio.h>
int a=1;
int b;
int main()
{
extern int a,b;
fun();
printf("%d %d\n",a,b);
}
方案B:
int a;
int b=2;
int fun()
{
printf("%d %d\n",a,b);
return 0;
}
在運行「結合「方案輸出爲:
1 2
1 2
現在,我已經約了幾個疑點這一個:
爲什麼不是輸出:
不是和b定義了兩次?
請清楚解釋這些,我在理解extern時遇到了很多問題,而且這些疑問中有一些不時出現。
在此先感謝。
你試圖欺騙編譯器和編譯器欺騙你。 –
這不是關於欺騙編譯器,而是關於讓概念正確。 – tapananand