2012-02-12 12 views
0

頭文件包含兩個變量。 由於我的程序結構,我有兩個「ld:重複符號」錯誤。 這兩個變量只具有本地意義。 有沒有辦法讓這些變量爲「私人」,所以即使頭文件被包含到另一個源文件中,它們也不會在頭文件之外被看到?如何「隱藏」頭文件中的變量?

編輯:請告訴我,如果我將把變量放到cpp文件,會不會很好?這些變量是非常大的陣列,而初始化定義,並採取了大量的代碼行...

extern char Lookup[][3] = { "aa", "ab", "ac", "ad", "ae", "af", ... and so on (really long)} 
+1

你可以在你的案例中使用C++'namespace'嗎? – 2012-02-12 16:14:25

回答

5

的解決方法是在你的頭文件中沒有定義的變量。

如果你絕對必須共享內部源文件之間的變量(我建議你不這樣做),那麼你應該做到以下幾點:

  1. 創建「internal.h」。
  2. 在該頭文件中聲明變量extern
  3. 在內部源文件中包含「internal.h」。
  4. 在一個或其他內部源文件中定義該變量。

該變量現在隱藏在外面的世界。 (它可能仍然在您的目標文件中可見,但您可以使用特定於平臺的欺騙來剝離它。)

+0

請檢查編輯我的問題 – 2012-02-12 16:17:36

3

不要在頭文件中定義變量。

使用extern在頭中聲明變量而不定義它。

+0

請檢查我的問題編輯 – 2012-02-12 16:17:22

0

我總是對那些「鬆散」的變量感到厭倦。我的意思是:他們確實影響了他們不是嗎?他們「屬於」一個班級?

不應該只是在一個類下聲明它們,然後將它們聲明爲靜態變量? (給定的語法,可能也是常量)?在這種情況下,您可以簡單地使用通常使用靜態變量(初始化程序列表,靜態初始化函數等)的所有東西。對我來說似乎更加清晰,因爲現在你的變量與某些東西並列。