在Objective-C中,您可以使用#define
#define kSomeMacro 1024
然后使用该宏来做这样的事情......
if (kSomeMacro == 1024) {
....
}
但是,如果您在末尾用冒号定义宏
#define kSomeMacro 1024;
然后if语句不起作用。这背后的原因是什么?如果在定义宏时放置;
,编译器为什么不抱怨?
答案 0 :(得分:1)
宏只是被他们的定义所取代。当您#define k 1024;
并编写if(k==1024)...
编译器实际看到的内容时:
if(1024; == 1024) ...
没有编译。
编译器没有抱怨,因为有时候你可能真的想要在你的宏中添加一个分号(;
称为分号,而不是冒号,:
)。