我试过这个:
CGRectMake(0.0f, kFooBarHeight, 100.0f, 10.0f);
我收到错误unexpected ';' before ')'
和too few arguments for CGRectMake
。当我与之交换时:
CGFloat foo = kFooBarHeight;
CGRectMake(0.0f, foo, 100.0f, 10.0f);
然后一切都很好。常量不适合作为参数传递吗?
答案 0 :(得分:15)
如果没有kFooBarHeight定义,就不可能给出一个好的答案,但我猜你用预处理器定义定义了kFooBarHeight?如果是这样,最好的猜测是你在结尾添加了一个分号。您的定义应如下所示:#define kFooBarHeight 10
但您设置为:#define kFooBarHeight 10;
。
如果您拥有的是第二个定义,当它被预处理器替换时,您得到:
CGRectMake(0.0f, 10;, 100.0f, 10.0f);
这就是为什么你的第二个例子正常工作,它扩展为:
CGFloat foo = 10;;
CGRectMake(0.0f, foo, 100.0f, 10.0f);
同样,这只是一个有根据的猜测,如果没有kFooBarHeight的实际定义,就不可能说出来。
答案 1 :(得分:3)
更改您的
#define kFooBarHeight 100;
到
#define kFooBarHeight 100
除非您确定如何使用分号,否则不应使用分号终止#defines。