2012-06-07 97 views
0

我試圖使用開源的VC++代碼。 我想將一個新項目添加到現有的VC++解決方案中,這個解決方案變成了一場噩夢。 我面臨的其中一個問題是修復「類型重定義」錯誤,我已經修復了一些錯誤,但現在我陷入了其他一些錯誤。代碼庫很大,所以沒有snippests ...如何處理「類類型重定義」

我的問題是,是否有任何「最佳實踐」來追查這些錯誤?

謝謝。

+2

嘗試#pragma一次。 – ervinbosenbacher

回答

2

通過類型重定義,我假設在您的工作區項目中定義了相同的名稱class es或typedef,並且它們在編譯時導致問題(不會與多個定義鏈接器錯誤混淆)。

最好的做法是始終將它們放在模塊或項目庫中的namespace
例如

// project1.h 
namespace project1 { 
    class X {}; 
} 

// project2.h 
namespace project2 { 
    class X {}; 
} 
+0

10x,請參閱我對@sharptooth的評論。 「包含」代碼不是我的,所以我不能添加命名空間。我只是在尋找一種方法來追蹤重新定義。 –

1

我的建議是將單獨項目中的所有代碼放在單獨的名稱空間中。那麼你不必擔心衝突。如果你有很多頭文件和源文件,這可能是很多工作,但從長遠來看它可能是值得的。

而且您不必將名稱空間添加到所有函數/類,只需在所有頭文件/源文件的頂部添加namespace foo {,並在底部添加}

+0

10x。請看我對@sharptooth的評論 –

0

當您嘗試在兩個或多個不同的程序中包含相同的頭文件時,如 調用B和B調用C,並且如果在A和B中都包含C,則會發生此類錯誤。同樣的事情發生在我身上,並解決了它。