我有一個包含以下定義全球的std :: string和一個定義規則
const std::string error[] = {"a", "b"};
現在,我在兩個不同的翻譯單元此文件和編譯源代碼的一個頭文件。一切正常,但爲什麼?預計這將打破one definition rule
。
現在更有趣,我改變了類型
const char* error[] = {"a", "b"};
,在這裏它是,預期的錯誤
multiple definition of `error'
它的工作原理相同的方法進行的std :: string爲int
, char
,short
等整數類型。這是什麼?
不知道const給出了一個內部鏈接。謝謝。標準中提到了它嗎? – axe
是的,找到了。 '聲明const的對象並沒有明確聲明爲extern有內部連接.' – axe
@axe什麼是參考? – BoBTFish