为什么我不能将常量放入CGRectMake中?

时间:2009-07-18 22:52:19

标签: iphone cocoa-touch uikit

我试过这个:

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);
然后一切都很好。常量不适合作为参数传递吗?

2 个答案:

答案 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。