3

我发现了这些行:

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

如果 TAG 从来没有被使用过,为什么他们#undef TAG在他们之前#define呢?

4

2 回答 2

3

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

因此,这只是为了防止这个问题而进行的防御性编码(尽管快速测试表明这个限制没有出现在 Objective-C 中)。

于 2013-01-15T02:11:15.567 回答
2

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

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

于 2013-01-15T02:15:47.740 回答