【问题标题】:Colon after #define in Objective-C [duplicate]Objective-C中#define后的冒号[重复]
【发布时间】:2015-01-19 10:13:57
【问题描述】:

在 Objective-C 中,您可以使用 #define 定义宏

#define kSomeMacro 1024

然后用那个宏来做类似的事情......

if (kSomeMacro == 1024) {
   ....
}

但是,如果您在末尾使用冒号定义宏

#define kSomeMacro 1024;

那么 if 语句将不起作用。这背后的原因是什么?如果您在定义宏时输入;,编译器为什么不抱怨?

【问题讨论】:

  • 因为它是一个简单的文本替换。因此,if (1024; == 1024) { 无效。

标签: objective-c macros


【解决方案1】:

宏只是被它们的定义所取代。当你#define k 1024; 和写if(k==1024)... 时,编译器实际看到的是:

if(1024; == 1024) ...

无法编译。

编译器不会抱怨,因为有时您实际上可能想在宏中添加分号(; 称为分号,而不是冒号,即 :)。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2012-06-24
    相关资源
    最近更新 更多