1. 程式人生 > >【C++】從extern關鍵字開始談C語言多檔案程式設計

【C++】從extern關鍵字開始談C語言多檔案程式設計

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");
}