什么时候使用条件编译而不是常规的if-else语句?

时间:2011-05-22 20:53:10

标签: if-statement conditional-compilation

我发现条件编译使用像#ifdef这样的结构比运行时条件检查有一些好处,例如较小的编译文件大小,可能更快的执行速度,以及稍微简单的调试,但什么时候使用一个比另一个更合适?当评估的条件语句只能在运行时确定时,使用运行时条件检查是最佳做法吗?

在我看来,将#ifdefs与常规的if-then-else语句混合会使代码变得难看并且难以阅读,所以我倾向于避免使用条件编译。但是我注意到在很多C#log类示例中,条件编译用于确定何时执行日志记录,具体取决于是否定义了诸如DEBUG / SHIP / TRACE之类的符号。

2 个答案:

答案 0 :(得分:2)

最好尽量减少#ifdef的使用。就像你说的那样,它们使代码更难以阅读和调试。

在针对不同平台时,或者调试/发布版本之间存在差异时,它们是不可避免的。

性能可以考虑使用#ifdef用于调试,但在大多数情况下,额外的条件语句对检查日志级别的影响可以忽略不计。我要说你必须分析代码并确定这是将条件逻辑转换为#ifdef的

之前的瓶颈

答案 1 :(得分:0)

条件编译应该用于为不同平台编译相同源代码或者如果您有不同版本的程序(例如测试版和完整版)。