多檔案專案 extern的用法

2021-10-01 13:20:41 字數 1326 閱讀 2881

多檔案和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檔案中包含...