Objective-C 中 #define 后的冒号

Colon after #define in Objective-C

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

定义宏
#define kSomeMacro 1024

然后将该宏用于类似这样的事情...

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

但是,如果您定义的宏末尾带有冒号

#define kSomeMacro 1024;

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

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

if(1024; == 1024) ...

无法编译。

编译器不会报错,因为有时候你可能真的想在你的宏里加一个分号(;叫分号,不是冒号,是:)。