2013-04-11 50 views
3

方案如何,找到問題涉及包括 - 可視化納入樹

不時我得到了系統頭編譯器錯誤。目前,例如:

C:\程序\微軟的Visual Studio 9.0 \ VC \ CE \包括\流緩衝(55):錯誤C2143:語法錯誤:之前 '字符串' 失蹤 ')'

一如既往,這是一個錯誤的錯誤信息,當然在我的代碼中有問題。但是,編譯器無法告訴我它在哪裏受傷。所以我一直在尋找通常的嫌犯,例如 「在某些頭文件或類似的東西中使用namespace XXX」。

我的問題是,我甚至不知道通過哪種方式將文件streambuf包含到我的代碼中。至少我不直接包含它。

具體問題

是否有一種方式來獲得某種「包容樹」? 喜歡的東西

myClass.cpp 
    + myClass.h 
    + ios 
     ... 
     + streambuf 

,所以我將能夠確定錯誤位置好一點。

+0

@JBentley:謝謝。這*是重複的,並且編譯器開關正是我正在尋找的。不幸的是,我發現之前找不到這個問題... – Seven 2013-04-11 14:59:53

回答

2

我通常使用

cl /c /P /d1PP file.cpp 

這將創建一個file.i。這是預處理的文件 - 它包含所有處理過的頭文件,即如果頭文件的特定部分在ifdef &之下,那麼你還沒有定義某些東西,它將不包含該塊。/d1PP(我認爲沒有記錄)也顯示了宏定義的位置。您還會看到在代碼中以及在什麼時候包含streambuf的人員。

我然後編譯file.i作爲

cl /c /Tp file.i (or cl /c /Tc file.i - if it's C and not C++) 

對於可視化,試試這個 - http://www.codeproject.com/Articles/3478/Include-File-Hierarchy-Viewer

+0

謝謝。我其實是在尋找包含樹的可視化。但是,你的方法將是分析結果源時的第二步。 – Seven 2013-04-11 15:01:19