[英]Windows Phone 8 preprocessor directive doesn't apply to mixed solution
[英]#if preprocessor directive doesn't always collapse
假设我定义了两个 #define 预处理器指令:
#define TEST
#define TESTOFF
现在我的代码组织在 TEST 和 TESTOFF #if 指令中,例如:
#if TEST
...
#endif
...MORE CODE...
#if TESTOFF
...
#endif
经常发生一个#if
区域,比如#if TEST
区域,变得可折叠而另一个( #if TESTOFF
区域)不可折叠。
由于这是一个有些人可能从未遇到过的奇怪现象,因此我将附上有关问题的快照:
有谁知道什么参数定义了#if
预处理器指令的这种行为?
如果#If
测试为假,那么显然其中的所有代码(无论其结构如何)都是死代码。 提供折叠这些部分是有意义的。
如果#If
测试为真,则其中可能包含任意代码。 所以折叠选项是基于代码结构的。 并且在任意#If
测试中不提供折叠。
Damien_The_Unbeliever 的评论是正确的。 VS 为当前设置无效的部分(显示为灰色的部分)提供折叠功能,而不为活动部分提供折叠功能。 所以如果我有这个代码:
#if DEBUG
string a = "2";
string b = "3";
#else
string a = "3";
string b = "3";
#endif
当调试配置处于活动状态时,底部将是可折叠的,但如果我将其切换到 Release,顶部将变得可折叠(而底部不可折叠)。
作为解决折叠问题和/或个人偏好的简单解决方法,值得注意的是,您可以将任何代码块括在大括号 {} 中,VS 将使其成为可折叠区域。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.