一 extern作用
宣告函式或者全域性變數的作用範圍,其宣告的函式和變數可以在本模組和其他模組使用(注意是宣告不是定義)。例如,模組b(編譯單元)引用模組a定義的全域性變數或函式,只要包含a模組的標頭檔案即可,在編譯階段,模組b雖然找不到該函式值或變數,但它會在連線是從模組a生成的目標**中找到此函式。
二 例子
/*main.c*/
#include #include "main.h"
int main()
/*foo.c*/
#include #include "main.h"
int main()
/*main.h*/
extern int a;
extern void foo(void);
$ gcc main.c foo.c -o main
$ ./main
main: a = 1
foo: a = 2
三 運用
在修改核心模組**時,新增加的函式,需要在對應的.h檔案用extern宣告
四 參考文章
外部變數與extern
b 外部變數 b 顧名思義就是定義在函式之外的變數。它只能定義一次,定義後編譯程式將為它分配儲存單元。如果需要訪問外部變數,則必須宣告相應的外部變數,宣告時可以用 b extern b 語句 b 顯示宣告 b 也可以通過上下文來 b 隱式宣告 b 比如 int max 5 main 這是顯示宣告。當...
extern 函式詳解
extern置於變數和函式前,目的是告訴編譯器,遇到此變數或者函式時,當作宣告來對待,去其他模組中尋找定義。1 extern置於變數前 例如 在乙個aa.c檔案中定義了乙個陣列 char str 6 如果想在另外乙個bb.c檔案中引用這個陣列,方法有兩種 1 建立乙個aa.h檔案,然後將 exter...
extern宣告跨檔案變數
file dog.h class dog int leg static int num1 定義靜態成員變數 file dog.cpp include dog.h int num2 static int num3 定義靜態成員變數,num3僅限於本檔案使用 file main.cpp include ...