禁用或修复在Visual Studio中的#ifdef敏感的着色和智能(Disable or fix

2019-07-18 22:57发布

问题:我的语法高亮和智能感知被打破。 我有这样一个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。)

Answer 1:

您所描述的问题是意料之中的在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工具箱这使迁移相当简单建立自己的项目,不需要做任何修改源代码。



Answer 2:

如果有人仍然有兴趣 - 关闭的#ifdef变灰:

  • 进入工具- >选项
  • 文本编辑器- > C / C ++ - >格式化
  • 以不同的颜色不选彩色化不活动的码块


Answer 3:

由于的#define东西里面stdafx.hpp定义,表明它总是定义,因为DEFINE_SOMETHING在项目配置中定义,这将是出了问题也定义在项目配置SOMETHING明确?

我曾经有过在VS2005和2008年类似的问题,以及冗余明确的定义有时帮助。



文章来源: Disable or fix #ifdef-sensitive colouring and intellisense in Visual Studio