2010-09-24 108 views
1

我有一個我想調試的Visual C++項目。但是,幾個函數實際上是由宏擴展生成的(例如爲特定屬性設置## Name)。所以,在調試的時候,我無法追蹤這些生成函數內部的執行流程。有沒有辦法在VisualStudio中調試預處理代碼

我必須使用/ P標誌,然後調試預處理的代碼嗎?

回答

2

您將不得不在一些其他項目中(或在命令行上,如果您想拼出所有包含和庫文件夾)使用/P標誌預處理代碼,然後編譯此預處理代碼而不是源文件在你的真實項目中。然後你可以通過它進行調試。

這就是說,一旦你在它,你不能消除宏?使用const,inline和模板,我很少感覺需要使用宏,如果我這樣做,它通常是非常小的,孤立的代碼段。這些要麼太瑣碎以至於不需要調試,要麼手動將它的一個實例替換爲它生成的代碼並進行調試。 (但是,這可能在過去的十年中發生過三次)​​。

+0

好吧,我要試試這個選項。我不想,但似乎我沒有選擇。我無法消除宏,我可以訪問代碼,但我沒有修改它的憑據。 – LB40 2010-09-27 07:05:10

+0

內聯如何刪除對宏的需求?例如,我一直在尋找log4cxx中的宏,這些宏會生成幾行樣板代碼。你如何用const,inline或templates替換宏的一行代碼的效率? – 2013-07-31 17:58:46

相關問題