2009/04/07

C語言的extern的功能

extern 這個修飾子可以告訴編譯器其他地方已經宣告了這個變數,也就說這個變數具有外部連結特性(linkage),以範例來看比較容易瞭解
//test2.cpp
int x = 100;
int y = 200;
-------------------------------------------------------------
// test.cpp
// extern 範例
#include
#include "test2.cpp" // 宣告 x 和 y
int a = 10;
extern int x; // 有效範圍; 整個程式
int main(int argc, char* argv[])
{
extern int y; // 有效範圍: 這個函數內
std::cout << a << std::endl; // 10
std::cout << x << std::endl; // 100
std::cout << y << std::endl; // 200
return 0;
}

假如沒有 #include "test2.cpp" ,編譯階段 test2.cpp 是可以過,但是連結時會發生 x 和 y 變數無法解析的錯誤。這就是 extern 的效用,宣告變數已經在某個地方定義過。

1 則留言:

匿名 提到...

說真的!!!表達的不太好。

台灣好行:後慈湖、大溪老街半日遊

要搭台灣好行 慈湖線 (票價100)的朋友,可以在【中壢火車前站】出口,往左邊直走5分鐘到【桃園客運總站】搭乘。搭車到最後一站【慈湖】後可以看到導覽服務站。後慈湖算是管制區,需要先 上網申請 才可以進入,如果是搭台灣好行的話,可以直接在服務站登記候補。假日通常都是人滿為患,建議如...