3

我的項目有一堆#ifdefs。這些#ifdef使用的宏通常通過使用'/D'選項的命令行來獲得不同的構建配置。 Visual Studio錯誤地假定這些宏沒有被定義,並且灰顯了這些#ifdefs中存在的代碼塊。問題不在於語法突出顯示 - 我可以將灰色代碼從選項中變爲彩色代碼;主要問題是我無法去#ifdef內部存在的任何函數的函數定義。我嘗試閱讀有關Visual Studio hint files,但這並不適合我。當使用`#ifdef`時,Visual Studio錯誤地標記不活動的代碼塊

任何人都可以幫助我解決這個問題嗎?我正在使用Visual Studio 2008.

回答

0

如果您沒有進行調試,並且您只是想要獲得智能感知或其他任何反應,那麼您總是可以快速啓動#define以強制IDE運行。

看來你也有類似的問題,因爲這個傢伙:

Can intellisense be enabled in VS2008 within preprocessor directive blocks like #ifndef ... #endif

+0

這是一個解決方案,但有一堆#ifdefs,不只是一個,它們分散在四周。所以我希望能得到一個更好的解決方案。 – Ashwin 2010-10-28 18:22:09

2

你定義了幾種在VS建立像調試,發佈配置,或者是你用的makefile構建?如果你沒有教VS關於你的/ D選項,那麼我想它不能幫你。但是,您應該能夠在項目屬性(配置屬性,C/C++,預處理器)下設置預處理器定義以獲得所需的效果,對嗎?

對於傳遞給編譯器的每個選項/DMACRO=XXX,請在IntelliSense預處理器定義中指定MACRO=XXX。對於傳遞給編譯器的每個選項/DMACRO(無值),請在IntelliSense預處理器定義中指定MACRO

+0

我正在使用makefiles進行構建。我試着按照這裏給出的說明(http://msdn.microsoft.com/en-us/library/ms173379%28VS.80%29.aspx)。我指示VS在配置屬性 - > NMake-> Intellisense下的預處理器定義中使用/ DMACRO = 1來啓用宏。關閉解決方案,刪除.ncb文件,重新打開解決方案,讓Intellisense運行並清理並重建解決方案。事情似乎仍然沒有奏效。 – Ashwin 2010-10-28 18:45:32

+0

@Ashwin你想在該選項框中選擇「MACRO = 1」。 '/ D'部分僅用於編譯器。 – 2013-04-17 14:49:09

相關問題