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) ...
无法编译。
编译器不会报错,因为有时候你可能真的想在你的宏里加一个分号(;
叫分号,不是冒号,是:
)。
在 Objective-C 中,您可以使用 #define
#define kSomeMacro 1024
然后将该宏用于类似这样的事情...
if (kSomeMacro == 1024) {
....
}
但是,如果您定义的宏末尾带有冒号
#define kSomeMacro 1024;
那么 if 语句将不起作用。这背后的原因是什么?如果在定义宏时输入 ;
,编译器为什么不抱怨?
宏只是被它们的定义所取代。当您 #define k 1024;
并编写 if(k==1024)...
时,编译器实际看到的是:
if(1024; == 1024) ...
无法编译。
编译器不会报错,因为有时候你可能真的想在你的宏里加一个分号(;
叫分号,不是冒号,是:
)。