【问题标题】:When is it appropriate to use conditional compilation instead of regular if-else statements?什么时候适合使用条件编译而不是常规的 if-else 语句?
【发布时间】:2011-08-30 17:57:39
【问题描述】:

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

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

【问题讨论】:

    标签: if-statement conditional-compilation


    【解决方案1】:

    最好尽量减少#ifdef 的使用。正如您所说,它们使代码更难阅读和调试。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-08-04
        • 2020-03-24
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        相关资源
        最近更新 更多