111
人物
c++中 extern 的含義和基本用法
在網上看到一個非常好的講解。
用例子給你示範 // 1.cpp int x = 10; // 2.cpp 注意沒有包含1.cpp #include <iostream> using namespace std; extern int x; int main () { cout << x << endl; } //則輸出10 兩個文件同在一個項目(project)中,你不包含某個文件(cpp)而可以用它內部定義的變量,(裏是.pp不是.h, 因為在.h中定義的數據不能在.cpp中用除非這個.cpp包含這個.h文件) 例: // 1.h #include <iostream> void print() { std::cout << "hello!" << std::endl; } // 2.cpp #include <iostream> using namespace std; // 以上兩句在這個例子中可以不要 extern void print(); int main () { print(); } 就會出錯因為1.h中的void print();在不包含它的文件中是不可調用的,即使在聲明了extern 也於事無補,如果你將這個例子中的1.h名字換成1.cpp就對了! 從這些可以看出來,extern在這裏起的作用是告訴編譯器,你這個print()已經在某個.cpp中已經定義了,這裏隻不過是聲明一下有這個東西,然後拿來用一下。定義隻能出現一次,聲明卻可出現多次,也就是說extern聲明可在多個文件中用(包括.h) 還有,你還可以屏蔽extern聲明,如第二個例子中的第二個.cpp文件可以改成 #include <iostream> using namespace std; // 這裏以上兩句不能省略,因為,這裏extern void print();函數已經不起作用了,在這裏調用的而是本文件中定義的void print()函數,其中用到了cout,endl;他們來源於std::<iostream> extern void print(); void print() { cout << "world!" << endl; } int main () { print(); } // 輸出結果為world! 還有一個extern "C"就不用說了,用這個可以允許C++程序中調用C的函數!
最後更新:2017-04-03 05:38:58