我的基本知識C編譯過程最近已經生鏽了。我試圖找出以下問題的答案,但無法連接編譯,鏈接和預處理階段基礎知識。在Google上快速搜索也沒有多大幫助。所以,我決定來到最終的知識來源:) 頭文件中的變量定義
我知道:變量不應該在.h文件中定義。它可以宣佈他們在那裏。
原因:因爲頭文件可能包含在多個位置,因此重新定義變量多次(鏈接器給出錯誤)。
可能的解決方法:在頭文件中使用頭文件並在頭文件中定義變量。
它確實是一個解決方案:否。因爲標頭警衛是預處理階段。這是告訴編譯器,這部分已經包含在內,不再包含它。但是我們的多重定義錯誤來自鏈接器部分 - 在編譯之後。
這整件事讓我感到困惑,關於如何預處理&鏈接工作。我認爲預處理將不包括代碼,如果頭部防護符號已被定義。在那種情況下,不應該多變的問題的定義也得到解決?
這些預處理指令會將編譯過程從重新定義符號保護下的符號中保存,但鏈接器仍然獲取符號的多個定義?
yikes ...那其實很簡單:) – Methos 2010-02-07 15:47:53