我希望這是一個有趣的問題。我試圖找到未解析的外部符號的來源。如果調試打開,我有調試代碼使用全局文件指針。所有這一切都調試代碼應該以#ifdef將被保護,如:尋找本應該被刪除的未解決的參考文獻
#ifdef DO_XLL_DEBUG
fprintf(debugPointer, "hello\n);
...
#endif
當我定義DO_XLL_DEBUG,一切都很好。如果我解壓DO_XLL_DEBUG,那麼所有的東西都會編譯(我會重建所有東西以防萬一),但是它在鏈接步驟失敗,找不到debugPointer。
所以,問題是,是否有一種簡單的方法可以找到我在調試代碼周圍#ifdef失敗的位置?我可以想到幾個不那麼簡單的方法。
我正在使用Visual Studio 2005.這是一個C++項目。
謝謝!
[編輯]
感謝您的所有建議。結果發現問題出在別人的代碼中,而這些代碼並不是我在Linux上開展工作的相應項目的一部分(我的大部分工作都是在這裏做的),所以難怪我沒有馬上找到它。
你看着從鏈接器輸出的完整?我對VS工具鏈並不熟悉,但許多鏈接器會告訴你符號是從哪裏引用的。 –
而不是混亂你的代碼與千#'ifdef's爲什麼你不只是'#ifdef'函數本身在發佈版本沒有什麼?這將是執行它的規範方式。無論如何,如果這是一個鏈接器錯誤,那麼它就是它無法找到的定義。 –
@EdS。,調試輸出'printf'樣式由於可變參數個數不易變成宏函數。 –