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

相关问题