1. 程式人生 > >C++學習筆記,關於一個檔案中的全域性變數在其他檔案中的使用

C++學習筆記,關於一個檔案中的全域性變數在其他檔案中的使用

錯誤:多重定義 和 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檔案。

當然,或許有其他方法,歡迎指教。