【问题标题】:What is the benefit of putting #undef before #define?将#undef 放在#define 之前有什么好处?
【发布时间】:2013-01-15 02:02:14
【问题描述】:

我找到了以下几行:

#undef TAG
#define kTAG @"TestRegistration///: "
#define TAG kTAG

如果 TAG 从未使用过,为什么他们在#define 之前#undef TAG

【问题讨论】:

    标签: objective-c preprocessor


    【解决方案1】:

    在某些版本的 C 中,重新声明宏是非法的,除非定义与之前的声明完全相同。

    因此,这只是防御性编码,以防止出现此问题(尽管快速测试表明此限制并未出现在 Objective-C 中)。

    【讨论】:

      【解决方案2】:

      如果之前没有定义宏,就没有理由这样做。但是,如果您希望宏可以预先定义,那么最好先取消定义它,因为它使代码的读者清楚您打算覆盖宏的先前设置的值(如果有的话)。

      如果您不希望已经定义了宏,则不应首先使用 undef。这样,如果它(令人惊讶!)已经定义,您将收到警告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        • 2010-12-20
        • 1970-01-01
        • 2011-02-05
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多