在下面的代碼中,我從file2.c中var10的變量聲明中刪除了詞extern我期待在兩個文件中的變量var10是相互獨立的,並且都有文件範圍當extern不在其中一個文件中使用時。但結果是10和34,而不是我所期望的10和10。所以我們不能使用文件作用域而不使用靜態關鍵字?爲什麼在兩個變量的作用域相同的情況下我們不會得到多重定義錯誤?我用codeblcoks + MinGW的變量與C中的文件範圍沒有靜態關鍵字
file1.c中
#include <stdio.h>
int var10;
int main (void)
{
var10=10;
printf("Var10 before function call=%d\n",var10);
var10TestFunc2();
printf("Var10 after function call=%d\n",var10);
}
file2.c中
#include<stdio.h>
int var10;
void var10TestFunc2(void)
{
var10 = 34;
}
'定義'vs'聲明' –