【问题标题】:difference between "ifndef" and "if !defined" in C?C中“ifndef”和“if!defined”的区别?
【发布时间】:2012-01-26 21:52:19
【问题描述】:

我在同一个 C 源文件中看到了 #ifndef ABC#if !defined (ABC)

它们之间有细微的区别吗? (如果是风格问题,为什么有人会在同一个文件中使用它们)

【问题讨论】:

    标签: c include-guards


    【解决方案1】:

    不,以这种方式使用两者之间没有区别。当初始#if 或后续#elif 条件之一需要更复杂的测试时,后一种形式(使用defined())很有用。 #ifdef 仍然可以工作,但在这种情况下使用 #if defined() 可能会更清楚。例如,如果它需要测试是否定义了多个宏,或者它是否等于特定值。

    差异(在文件中同时使用)可能取决于使用中的特定细微差别,如上所述,或者只是由于不一致而导致的不良做法。

    【讨论】:

      【解决方案2】:

      在您提供的上下文中,它们是相同的:您只是检查一个宏标识符是否存在。

      不过,#if 表单允许您评估表达式,这很有用。

      【讨论】:

        猜你喜欢
        • 2010-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        相关资源
        最近更新 更多