创建CGPoints的c数组

时间:2013-09-18 15:06:02

标签: ios c arrays struct

我想在c样式数组中创建一个CGPoints的常量数组。

我从这开始,但得到了错误Initializer element is not a compile time constant

static CGPoint locations[5] = 
{
    CGPointMake(180, 180),
    CGPointMake(300, 130),
    CGPointMake(435, 120),
    CGPointMake(470, 230),
    CGPointMake(565, 200),
};

我删除static认为可能与此有关,但错误仍然存​​在。

如何创建CGPoints数组(更广泛地说,任何类似定义的结构)。


<子> 注意:我已经发布了这个问题并且部分回答了我自己的参考,因为我无法记住这个问题并浪费太多时间来研究其他来源的答案。这里希望它能帮到别人!

2 个答案:

答案 0 :(得分:3)

事实证明CGPointMake函数调用是“不是编译时常量”的东西,因此需要将CGPoints视为原始结构:

static CGPoint locations[5] = 
{
    (CGPoint){180, 180},
    (CGPoint){300, 130},
    (CGPoint){435, 120},
    (CGPoint){470, 230},
    (CGPoint){565, 200},
};

演员表并不是严格要求,但为了我自己的理智,我会保留它以显示这些数字中的每一个实际上都是CGPoint的一部分。这也是有效的:

static CGPoint locations[5] = {
    {180, 180},
    {300, 130},
    {435, 120},
    {470, 230},
    {565, 200},
};

答案 1 :(得分:0)

调用函数始终是运行时活动。需要在编译时计算数组初始值设定项列表的内容。