问题:我的语法高亮和智能感知被打破。 我有这样一个C ++源文件:
#include "stdafx.hpp"
#ifdef SOMETHING
do_some_stuff;
#endif
其中stdafx.hpp
(该项目的预编译头)包括.h
文件,上面写着:
#ifdef DEFINE_SOMETHING
#define SOMETHING
#endif
和DEFINE_SOMETHING
在用于项目的项目属性中定义(在C ++ /预处理器)。
Visual Studio是无法追踪和显示do_some_stuff;
(实际上是许多行的代码)以纯灰色 - 我既没有语法着色也不智能感知。
问题:我怎么能要么使Visual Studio中得到这个权利(不太可能)或关闭的事实,它变灰出它认为是代码#ifdef
倒是出来?
(重新排列的代码是不是一种选择 - 这是一个庞大而复杂的系统,它的文件是建立在各种环境中,Visual Studio的只是其中的一个,我使用Visual Studio 2005,但我很想知道这是否是。固定的或在以后的版本workaroundable。)
您所描述的问题是意料之中的在2005年VS它是固定在Visual Studio 2010和后来由于完全重新设计的智能感知系统的过程。 这并不直接适用于您的问题,但这里的底层架构的一些信息: http://blogs.msdn.com/b/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx
有一些事情你可以尝试,而有些项目结构的变化,可以帮助最大限度地减少问题的频率,但无论你做什么都会被击中或错过,问题最终会再次复出无关。 唯一真正的解决办法是使用较新的IDE。
您可以继续通过与水仙(沿安装VS 2010使用VS 2005构建工具http://daffodil.codeplex.com ),然后在2010年的VS平台V80工具箱这使迁移相当简单建立自己的项目,不需要做任何修改源代码。
由于的#define东西里面stdafx.hpp定义,表明它总是定义,因为DEFINE_SOMETHING在项目配置中定义,这将是出了问题也定义在项目配置SOMETHING明确?
我曾经有过在VS2005和2008年类似的问题,以及冗余明确的定义有时帮助。
文章来源: Disable or fix #ifdef-sensitive colouring and intellisense in Visual Studio