【C++】從extern關鍵字開始談C語言多檔案程式設計
阿新 • • 發佈:2018-12-14
extern 關鍵字 我們知道,C語言程式碼是由上到下依次執行的,不管是變數還是函式,原則上都要先定義再使用,否則就會報錯。但在實際開發中,經常會在函式或變數定義之前就使用它們,這個時候就需要提前宣告。
所謂宣告(Declaration),就是告訴編譯器我要使用這個變數或函式,你現在沒有找到它的定義不要緊,請不要報錯,稍後我會把定義補上。
我們知道使用 printf()、puts()、scanf()、getchar() 等函式要引入 stdio.h 這個標頭檔案,很多初學者認為 stdio.h 中包含了函式定義(也就是函式體),只要有了標頭檔案程式就能執行。其實不然,標頭檔案中包含的都是函式宣告,而不是函式定義,函式定義都在系統庫中,只有標頭檔案沒有系統庫在連結時就會報錯,程式根本不能執行。
變數和函式不同,編譯器只能根據 extern 來區分,有 extern 才是宣告,沒有 extern 就是定義。
變數的宣告只有一種形式,就是使用 extern 關鍵字:
extern datatype name;
變數也可以在宣告的同時初始化,格式為:
extern datatype name = value;
這種似是而非的方式是不被推薦的,有的編譯器也會給出警告。
extern 是用來宣告的,不管具體的定義是在當前檔案內部還是外部,都是正確的。(經過驗證,這個說法是正確的)
程式碼示例:
兩個程式:
main.c
#include <stdio.h> extern void func(); extern int m; int n = 200; int main(){ func(); printf("m = %d, n = %d\n", m, n); return 0; }
module.c
#include <stdio.h>
int m = 100;
void func(){
printf("Multiple file programming!\n");
}