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

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

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

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

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

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

看起来你和这个家伙有类似的问题:

可以在VS2008中在#ifndef … #endif之类的预处理器指令块中启用智能感知