多檔案和extern的意義:乙個例子:讓使用者從控制輸入乙個值,表示圓的半徑。程式計算並輸出圓的面積。
// other.cpp
double get_area(double r)
// main.cpp
extern double get_area(double r);
int main()
extern, (external),外部的extern: 宣告外部函式
在a.cpp中使用b.cpp中的函式,需要extern宣告
extern: 宣告外部全域性變數
在a.cpp中訪問b.cpp中的全域性變數,需要extern宣告
extern的作用: 告訴編譯器,在某個cpp檔案中,存在這麼乙個函式/全域性變數。
注:符號(symbol): 把函式名和全域性變數名,稱為符號。
全域性變數的宣告與定義
宣告declaration
extern int a;
extern double b;
extern float numbers[5];
定義definition
int a = 10;
double b;
float numbers[5] = ;
注:全域性變數的宣告語句是不能加初始值的
extern的作用:告訴編譯器,在某個cpp檔案中,存在這麼乙個函式/全域性變數。所以,在本cpp中定義它也是可以的,不是一定要在別的cpp中定義。
被宣告為extern的函式或全域性變數,其實在本cpp中定義也是可以的。
注意:(1) 重定義 multiple definition
多個cpp中,不能定義相同的名字的符號。
具體來講:
不能定義相同名稱的全域性變數。
不能定義相同的函式。(相同的函式:指函式名+引數列表均相同的函式。)
(2) 無定義 undefined reference
你用extern宣告了乙個函式,並且呼叫了它。但是在鏈結過程中,沒有在任何乙個cpp中發現它的定義。
extern的幾種用法
一般來說,extern關鍵字用於三種場合 1 用於標頭檔案預編譯時對於c語言編譯的宣告,如常見的 ifndef shader h define shader h ifdef cplusplus extern c endif endif 一般這種情況是表示在c 中引用c語言中的函式和變數,如果 c 呼...
C 中extern 的用法
前段時間看了extern 的用法,今天試了一下出現了如下問題,我在乙個標頭檔案1中定義了全域性常量,然後在標頭檔案2中定義了同樣的全域性變數,然後把兩個標頭檔案包含在另外乙個cpp裡面出現了了重新定義的錯誤,去掉頭檔案2中的全域性定義,undeclared identifier 的錯誤。最後把2中的...
extern和const的用法
extern的用法 1.extern修飾變數 1.1 同乙個變數被多個檔案共享時,就要注意申明為extern int a 形式,在xx.h檔案中先宣告為extern int a 後在相應的.cpp檔案中定義注意還是extern int a 200 其他檔案若要引用該變數,就可以在其.cpp檔案中包含...