假设我定义了两个#define预处理器指令:
#define TEST
#define TESTOFF
现在我的代码是在TEST和TESTOFF #if指令中组织的,例如:
#if TEST
...
#endif
...MORE CODE...
#if TESTOFF
...
#endif
经常会发生一个#if
区域(比如#if TEST
区域)变得可折叠而另一个(#if TESTOFF
区域)不变。
由于这是一些可能从未遇到过的奇怪现象,我正在追加问题的快照:
有谁知道哪些参数定义了#if
预处理程序指令的行为行为?
答案 0 :(得分:5)
如果#If
测试为假,那么显然所有代码(无论它的结构可能是什么)都是死代码。提供折叠这些部分是有意义的。
如果#If
测试为真,则可以包含任意代码。因此,折叠选项基于代码结构。并且在任意#If
测试中都没有崩溃。
答案 1 :(得分:4)
Damien_The_Unbeliever的评论是正确的。 VS为当前设置处于非活动状态的部分(灰色部分显示)提供折叠功能,但不为活动部件提供折叠功能。所以,如果我有这个代码:
#if DEBUG
string a = "2";
string b = "3";
#else
string a = "3";
string b = "3";
#endif
当我将Debug配置激活时,底部部分将是可折叠的,但如果我将其切换到Release,则顶部将变为可折叠(并且底部不可折叠)。
答案 2 :(得分:0)
作为折叠问题和/或个人喜好的一种简单变通方法,值得注意的是,您可以将任何代码块都放在大括号{}中,而VS将使其变成可折叠区域。