【发布时间】:2010-09-28 02:57:27
【问题描述】:
在 C/C++ 中,您可以执行以下操作:
#define IN_USE (1)
#define NOT_IN_USE (-1)
#define USING( system ) ( 1 / (system) == 1 / IN_USE )
然后:
#define MY_SYSTEM IN_USE
#if USING( MY_SYSTEM )
<my_system impl>
#endif
这种设置意味着:
所有条件编译符号都必须定义为 IN_USE 或 NOT_IN_USE。
我可以将它们全部放在一个(或几个)头文件中,然后轻松打开/关闭它们,看看有哪些条件编译符号。
#if USING(MYSYSTEM) 之类的错字由于 div by 0 而不是静默编译出来而被编译器捕获。
在 C# 中可以做到这一点吗?是否有其他最佳实践方法可以达到相同的效果?
我意识到在 C# 中您可以通过在项目设置中设置它们并使用 #if 来进行条件编译,但我不喜欢不必明确未定义的事实。这就是项目设置中有“DEBUG”和“TRACE”复选框的原因。如果它们不在那里,您将不知道可以打开它们。
【问题讨论】:
标签: c#