在Objective-C中定义后的冒号
在Objective-C中,您可以使用在Objective-C中定义后的冒号,objective-c,macros,Objective C,Macros,在Objective-C中,您可以使用#define #define kSomeMacro 1024 然后用这个宏来做这样的事情 if (kSomeMacro == 1024) { .... } 但是,如果定义宏的末尾带有冒号 #define kSomeMacro 1024; 那么if语句就不起作用了。这背后的原因是什么?如果您输入,为什么编译器不抱怨定义宏时?宏只是被其定义替换。当你#定义k1024
#define
#define kSomeMacro 1024
然后用这个宏来做这样的事情
if (kSomeMacro == 1024) {
....
}
但是,如果定义宏的末尾带有冒号
#define kSomeMacro 1024;
那么if语句就不起作用了。这背后的原因是什么?如果您输入
,为什么编译器不抱怨代码>定义宏时?宏只是被其定义替换。当你#定义k1024如果(k==1024)
编译器实际看到的是:
if(1024; == 1024) ...
它不能编译
编译器不会抱怨,因为有时您可能真的想在宏中添加分号(;
称为分号,而不是冒号,它是:
),因为它是一个简单的文本替换。因此,如果(1024;==1024){
无效。