2017-10-05 34 views
-2

我有一個頭文件config.h在那裏我簡單地定義使用爲const char *訪問:LD返回1退出狀態

namespace configuration { 
    const char* name = "test"; 
} 

值的字符串,我從.cpp文件configuration::name訪問它。如果我將其更改爲const string name = "test";它的工作原理

error: ld returned 1 exit status 

:但後來我發現了一個編譯器錯誤。爲什麼?我該如何解決這個問題才能夠使用const char*呢?

+3

'ld'也應該說明它未能鏈接的內容。 – orhtej2

+1

你如何在你的'cpp'文件中訪問它?你可能試圖將'const char *'賦值給不適用的東西,而使用'string'則可以。 – user2205930

+1

@LeonardoAlvesMachado不,這是一個鏈接器錯誤。 – orhtej2

回答

1

兩個字符串

namespace config { 
    const char* test1 = "test1"; 
    const std::string test2 = "test2"; 
} 

之間的區別是,第二個是consthence has internal linkage,而第一不(它只是一個指向const),需要一個外部聯動,即你必須提供一個定義在一些.cpp文件中,失敗會導致鏈接器錯誤。

相關問題