使用`#ifdef`时,Visual Studio错误地标记非活动代码块

时间:2010-10-28 18:11:39

标签: c++ c visual-studio-2008 intellisense conditional-compilation

我的项目有很多#ifdefs。这些#ifdef使用的宏通常使用'/D'选项通过命令行传递,以获得不同的构建配置。 Visual Studio错误地假设未定义这些宏并使这些#ifdef内的代码块变灰。问题不在于语法高亮 - 我可以将灰色代码变为选项中的彩色代码;主要问题是我无法转到#ifdef内存在的任何函数的函数定义。我尝试阅读Visual Studio hint files,但这对我不起作用。

任何人都可以帮我解决这个问题吗?我正在使用Visual Studio 2008。

2 个答案:

答案 0 :(得分:2)

您是否在VS中定义了几种类型的构建,如Debug,Release,或者您正在使用makefile构建?如果你没有教过VS你的/ D选项,那么我想它无法帮到你。但您应该能够在项目属性(配置属性,C / C ++,预处理器)下设置预处理器定义以获得所需的效果,对吗?

对于传递给编译器的每个选项/DMACRO=XXX,请在IntelliSense预处理器定义中指定MACRO=XXX。对于传递给编译器的每个选项/DMACRO(无值),请在IntelliSense预处理器定义中指定MACRO

答案 1 :(得分:0)

如果你没有调试,并且你只是试图获得intellisense或其他任何反应,你总是可以快速调出#define来强制IDE运行。

似乎你和这个家伙有类似的问题:

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