我可能会通过盲目实验或更好的Google搜索尽快找到答案,但是......这可能会让其他人受益。
这不在类定义中,而是在.m objective-c文件中。我有一个浮点数组的声明,它在Xcode中给了我以下两个警告。错误显示在DECLARATION行,而不是分配行。
数据声明没有类型或存储类。 在声明
中键入默认值为“int”然后一个赋值失败 - 但如果变量默认为int,那就会发生。
这是代码。第一个声明(带有初始化程序的静态const浮点数组)不会产生错误,第二个声明(简单浮点数)也不会产生错误。第三个和第四个(浮点数组)。
static const float offset3d[4] = {
0.0, 0.0, -2.0, 0.0
};
float boxv;
float boxv0[3];
float boxv1[3];
boxv0[0] = -0.5;
// this gives the error of trying to assign float to (default) int
答案 0 :(得分:2)
您似乎正在尝试执行作业
boxv0[0] = -0.5;
在功能块之外,这是不允许的。在功能块之外,仅允许声明(使用或不使用初始化程序)。您收到的警告消息是由于C在传统上暗示int
没有指定类型,因此,在功能块之外,
someVariable = 5;
隐式输入为int
,即上述定义等同于
int someVariable = 5;
当编译器看到
时boxv0[0] = -0.5;
在功能块之外,它注意到没有类型规范,因此它假设int
(它发出警告)。然后它意识到boxv0
之前已声明为float
,因此它会产生冲突类型错误。
如果您需要在功能块之外初始化boxv0
,请像对offset3d
那样执行此操作,例如
float boxv0[3] = {
-0.5f, -1.0f, -1.5f
};
答案 1 :(得分:0)
您需要将boxv0[0] = -05.;
放在某个方法的某个位置。您的每个声明都应该有效,并且分配失败。您的第一个赋值是有效的,因为您完全分配了声明的数组 - 这是可以接受的,因为编译器可以创建内存位置并填充它。最后一个失败是因为您尝试在类方法之外动态修改它,编译器不允许。最后,如果您收到有关声明的警告,您可能还会有其他事情发生。