2011-09-10 161 views
0

我有這樣的代碼:C代碼中的錯誤是什麼?

#include<stdio.h> 
int main() 
{ 
    extern int i; 
    i = 20; 
    printf("%d\n", sizeof(i)); 
    return 0; 
} 

我得到這樣的錯誤:

In function `main': 
undefined reference to `i' 

即使我已經定義i爲什麼會出現錯誤時,拋出? 在此先感謝。

回答

3

您已聲明i在單獨的文件中定義,但尚未鏈接到外部文件。

如果您刪除了extern關鍵字,它將按照您的預期工作。

1

extern關鍵字聲明一個變量或函數並指定 它具有外部鍵(它的名字是來自除 在其中它被定義其他文件可見)。當修改一個變量時,extern 指定該變量具有靜態持續時間(當程序開始時 被分配,當程序結束時被釋放)。變量或函數可以在另一個源文件中定義,或者在相同文件中定義爲 。默認情況下,文件 範圍內變量和函數的聲明是外部的。

i哪裏定義?

試試這個。

#include<stdio.h> 
int main() 
{ 
    int i; 
    i = 20; 
    printf("%d\n", sizeof(i)); 
    return 0; 
} 
+0

或者在'}'之後放置一個'int i;'並將'extern int i' – xanatos

0

的「外部」的關鍵字是你告訴編譯器「這個變量是定義在其他地方,只要使用它,並相信我,這將是可在連接時間。」