C# 中有
#region
#endregion
两个预处理符号, 这是在大量回避C/C++ 预处理能力及误用带来的麻烦中, 反而新添加的一个预处理符号. 在C#中很有用. MS 的IDE也会用它来标识自动生成的代码, 如Form 代码中的 InitializeComponent, Dispose方法等.
所幸, VC中也有了类似的东西:
#pragma region
#pragma endregion
使用起来与C#一样, region 后面跟任意的字符串. 而且region和endregion 后面的字符串不要求一致.
VC通过#pragma来提供这一功能是有意避免与其它编译器的不兼容, 反正#pragma是语言标准默许的恣意发挥的一个地方.
不幸地是, 这个通过#pragma提供的 region, 竟然不能用CTRL+] 在region和endregion 之间切换. 用的是VS2008, 标准版, 装了R#和VA, TestDriven几个插件. C#中的#region和 #endregion之间是可以通过以上快捷键切换的.
不过, 用最原始的C/C++预处理实现的变相region功能, 也可以被VC的编辑器支持的良好, 而且, 可以在块的头尾之间跳转.
#pragma region 还有细节上的其它不爽之处: 折叠起来之后, 上图中两个红色框中显示着相同的提示串, 有啥用?
蓝色线之下的是用最朴素的#if / #endif实现的, 折叠之后显示的提示也有理性的表现.
注意#if 只接受简单的整数运算和布尔运算, 不能象在运行期指望指针类型会自动转换为bool那样直接写一个字符串, 如
#if "region: test"
...
#endif
这是通不过编译的, 上面的实现利用了一点小技巧: 把描述性的region字符串写在注释中, 并且位于常量1之前, 这样才能保证折叠起来之后你仍然能看见注释里的字串.
阅读(5275) | 评论(0) | 转发(0) |