2017-04-19 55 views
2

我正在使用一個程序,該程序充滿了Visual Studio中編程的編譯器指令。如何在整個編譯過程中遵循預處理器指令

我做了一些改變,現在我卡住了一個無法解析的外部編譯器/鏈接器錯誤。

我相信這是由編譯器指令引起的,它似乎沒有檢測到該特定函數的實現,爲了研究這一點,我希望在整個編譯過程中遵循#ifdef編譯器指令。

我已經嘗試過使用/P配置,但在Output窗口中看不到任何編譯器指令。

有誰知道如何做到這一點?

+0

Visual Studio應該將由宏禁用的代碼塊變灰,否? – DeiDei

+0

事實上,這隻對靜態編譯器指令有用,但在我的情況下,它們有時以'#define'開頭,然後執行'#undefine',然後再返回,..., (因此很可能是未解決的外部問題),我希望預處理器的編譯輸出能夠告訴我發生了什麼。 – Dominique

回答

1

我認爲你在/P選項的正確軌道上,但doc指出輸出將轉到擴展名爲.i的文件(所以可能不會到你的輸出窗口)。

此外,您可以通過生成映射文件來找到任何鏈接器錯誤的幫助;見/MAP (Generate Mapfile)

+0

謝謝@Phil,但它似乎不工作:即使設置了「/ map」設置,我也沒有* .i文件,也沒有其他文件。 – Dominique

+0

輸出窗口是否顯示正在執行的編譯器命令?可能有一些線索爲什麼沒有生成文件。 –

+0

我剛剛嘗試啓用簡單控制檯應用程序上的'/ P'選項並構建。 '.i'文件位於編譯輸出目錄(例如,在我的例子中爲'Debug')。鏈接失敗是一種副作用(因此,在解決編譯器/預處理器問題之後,您需要排除故障時的問題)。 –