c語言extern關鍵字詳解
阿新 • • 發佈:2019-01-05
在c語言中程式碼的執行順序是從上往下執行的,如果定義的函式或者變數在呼叫之後,那麼呼叫的時候編譯就會找不到需要使用的變數。這樣就會出現錯誤,如下程式碼:
#include<stdio.h>
int main(){
printf("%d",num);
function();
return 0;
}
int num =5;
void function(){
printf(" hello word main function\n");
}
執行這句程式碼就會出現錯誤,錯誤原因就是因為,num和funcion函式定義在main函式的下面導致main函式中執行num和function的時候編譯器並沒有編譯到那裡所有編譯器就會認為沒有定義num和function 函式所以會出現錯誤。那麼我可以使用extern關鍵字來改正個問題。extern關鍵字可以 讓變數全域性化。
#include<stdio.h>
extern int num ;
void function();
int main(){
printf("%d",num);
function();
return 0;
}
int num =5;
void function(){
printf(" hello word main function\n");
}
這樣就可以正常運行了。extern 關鍵字還可以呼叫其他.c檔案中的變數和函式 如下:
test_extern.c #include<stdio.h> int num =5; int age=29; char name="make"; void func(){ printf(" 呼叫 test_extern函式!!\n "); } test_main.c #include<stdio.h> int main(){ extern int num ; extern int age; extern char name; extern void func(); func(); printf("%d\n",num); printf("%d\n",age); pirntf("%s\n",name); return 0; }
執行上面程式碼就可以在test_main檔案中打印出test_extern檔案中的欄位和方法。這樣寫有一個好處就是可以不用再檔案中因為別的 .h標頭檔案,因為如果引用.h標頭檔案就可以呼叫.h檔案中所有的函式和欄位,這樣不是很安全,所以如果想代用另外一個.c原始檔的函式時可以使用extern關鍵字來呼叫這樣提高 了函式的安全性。
總結:extern 有三種用三,在本檔案中使變數全域性化,呼叫其他原始檔中的欄位,呼叫其他原始檔中的函式。