在Objective-C中#define之后的冒号

时间:2015-01-19 10:13:58

标签: objective-c macros

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

定义宏
#define kSomeMacro 1024

然后使用该宏来做这样的事情......

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

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

#define kSomeMacro 1024;

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

1 个答案:

答案 0 :(得分:1)

宏只是被他们的定义所取代。当您#define k 1024;并编写if(k==1024)...编译器实际看到的内容时:

if(1024; == 1024) ...

没有编译。

编译器没有抱怨,因为有时候你可能真的想要在你的宏中添加一个分号(;称为分号,而不是冒号,:)。