#if预处理程序指令并不总是崩溃

see*_*uit 2 c# visual-studio-2010 preprocessor-directive

假设我定义了两个#define预处理器指令:

#define TEST
#define TESTOFF
Run Code Online (Sandbox Code Playgroud)

现在我的代码在TEST和TESTOFF #if指令中组织,例如:

#if TEST
    ...
#endif

...MORE CODE...

#if TESTOFF
    ...
#endif
Run Code Online (Sandbox Code Playgroud)

通常情况下,一个#if区域(例如该#if TEST区域)变得可折叠而另一个#if TESTOFF区域(区域)不变.

由于这是一些可能从未遇到的奇怪现象,我正在附上有关问题的快照: 交替折叠的#if区域

有谁知道什么参数定义#if预处理器指令的这种行为行为?

Dam*_*ver 5

如果#If测试是假的,那么显然所有代码(无论它的结构可能是什么)都是死代码.提供折叠这些部分是有意义的.

如果#If测试为真,则可以包含任意代码.所以崩溃选项基于代码结构.任意#If测试都没有崩溃.