200601292035C++中的extern用法
C++有二個基本的原則:
1.對於變數或函數,可以宣告多次,但只能定義一次。
2.C++中,尋找變數或函數時,是採用Lookup(向上尋找定義或宣告)。
當你用compiling這二個檔案時,會得到a、f符號沒有定義。因為C++向上尋找定義或宣告時,未發現這二個符號,所以我們要把程式改寫如下:
改成這種形式,就可以順利compiling過。
這兒有幾點注意的事項:
1.C++ 中只允許變數或函數的定義出現一次。由於變數只有定義規則,沒
有宣告規則,所以當你鍵入int a;時,代表此變數已經被定義了。我們如
何宣告一個變數呢?加上extern 變成exern int a;,告訴comipler,此變數a只
是一個宣告,它的定義在別處。
2.函數規則分成宣告與定義二種。當一個函數只有傳回值、名稱、傳入
值, 沒有大括號{},compiler會把此種形式當成是函數宣告;如果加上了
{}, 形成函數定義。所以你要宣告一個函數,只須 鍵入 int f();,extern可
加 可不加,compiler會自動把它示為函數宣告。
1.對於變數或函數,可以宣告多次,但只能定義一次。
2.C++中,尋找變數或函數時,是採用Lookup(向上尋找定義或宣告)。
main,cpp ~~~~~~~~~~ int main() { a=100; }f(); return 0; f.cpp ~~~~~~~~~~ int a; void f() { ; } |
當你用compiling這二個檔案時,會得到a、f符號沒有定義。因為C++向上尋找定義或宣告時,未發現這二個符號,所以我們要把程式改寫如下:
main.cpp ~~~~~~~~~~ extern int a;//extern一定要加 exter void f();//extern可加可不加 int main() { a=100; } f(); return 0; f.cpp ~~~~~~~~~~ int a; void f() { ; } |
這兒有幾點注意的事項:
1.C++ 中只允許變數或函數的定義出現一次。由於變數只有定義規則,沒
有宣告規則,所以當你鍵入int a;時,代表此變數已經被定義了。我們如
何宣告一個變數呢?加上extern 變成exern int a;,告訴comipler,此變數a只
是一個宣告,它的定義在別處。
2.函數規則分成宣告與定義二種。當一個函數只有傳回值、名稱、傳入
值, 沒有大括號{},compiler會把此種形式當成是函數宣告;如果加上了
{}, 形成函數定義。所以你要宣告一個函數,只須 鍵入 int f();,extern可
加 可不加,compiler會自動把它示為函數宣告。
回應