C++學習筆記,關於一個檔案中的全域性變數在其他檔案中的使用
阿新 • • 發佈:2019-01-23
錯誤:多重定義 和 xxx變數已經在xxx.obj中定義
當在一個.cpp檔案中定義了一個全域性變數之後,需要在其他檔案中使用時,需要用到關鍵字extern
當使用extern修飾一個變數時,例如extern int x; 代表當前變數x 的定義來自於其他檔案,當進行編譯時,會去其他檔案裡面找,
在當前檔案僅做宣告,而不是重新定義一個新的變數
main.cpp
#include <iostream> #include "Some.h" using namespace std; extern int xx123; int main() { Some * some = new Some; some->prntf(); xx123 = 50; cout << "main:" << xx123 << endl;; delete some; system("PAUSE"); return 0; }
Some.h
#ifndef SOME_H
#define SOME_H
class Some {
public:
Some();
~Some();
void prntf();
};
#endif // !SOME_H
Some.cpp
#include "Some.h" #include <iostream> using namespace std; int xx123; Some::Some() { xx123 = 20; } Some::~Some() { } void Some::prntf() { cout << "some:" << xx123 << endl;; }
當一個全域性變數需要多檔案中使用的時候,應當把這個變數的定義放在.cpp檔案中而不是.h檔案。
當然,或許有其他方法,歡迎指教。