如何折叠不会在Visual Studio中编译的#ifdefs的所有块?

Sin*_*lus 8 code-formatting folding visual-studio

问题如下:代码库有许多文件,其中使用#if defined(...)指令为每个目标平台有条件地编译了多个块.由于典型的程序员主要在其中一个平台上工作,因此即使代码块在Visual Studio 2005编辑器中显示为灰色,也很难用这些大块非活动代码块读取和导航代码.

让某人知道只折叠未编译但仍存在于源文件中的代码块的功能.

Car*_*arl 4

据我所知,默认情况下无法折叠不活动的预处理器区域,并且似乎没有提供该功能的扩展。

也就是说,您可以做的是更改非活动预处理器文本的呈现方式(至少在 VS2012 上),这样就不会那么分散注意力,并且实际编译的代码更容易阅读。

尝试这些设置:

Tools > Options > Text Editor > C/C++ > Formatting:
Show Inactive Blocks : true
Disable Inactive Code Opacity : false
Inactive Code Opacity Percent: 30 
Run Code Online (Sandbox Code Playgroud)

默认值为 65,但我发现如果您使用深色主题,则 30 效果更好。

您还可以使用Visual Studio 2012 颜色主题编辑器进一步调整颜色,以进一步提高可读性(例如,如果您更喜欢 Sublime Text 呈现代码的方式)