我有一個變量在一個名爲「external.h」文件,這樣一個變量沒有被定義多次聲明在頭一個共同的變量給出了鏈接錯誤
這個頭文件頭衛兵它。並且其他cpp文件可以使用該變量。 這是什麼樣子
文件:External.h
#ifndef EXTERNAL_COMN_GUARD
#define EXTERNAL_COMN_GUARD
char* rst = "SomeString";
#endif
現在,當我試圖建立我的項目,我得到的,因爲這下面的鏈接錯誤:
1>contact.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
1>moc_houses.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
1>moc_messages.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
1>huts_messages.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
1>main_messages.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
1>host.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
1>main.obj : error LNK2005: "char * rst" ([email protected]@3PADA) already defined in peopleWidget.obj
我解決通過執行
常量字符RST [] = 「東西」 這個問題;
我想知道爲什麼這個作品,而不是std::string rst = "something"
「這個頭文件中有頭衛士所以一個變量不會被多次定義。「 - 它是。它在每個使用標題的文件中定義。就像每個文件中定義的那樣,其他人都犯了錯誤,併發布了另一個缺乏研究的重複問題。 – 2013-12-09 06:20:13