在结构中初始化typedef数组

Cewein

我正在制作Camera结构。结构使用vec3定义的typedef float vec3[3]

初始化一个vec3我做vec3 vector = {0.,0.,0.};

我的Cameras结构是这样的:

typedef struct Cameras {
    vec3 eye;
    vec3 target
} Camera;

但是当我这样做时:

Camera cam;
cam.eye = { .5, 1., 0. };

它崩溃了,编译器告诉我:expression must be modifiable

我认为这是与指针,但没有一个错误,并更换vec3 eyevec3 * eyecam->eye = {.5,1.,0.}改变不了什么。

我是用错误的方式创建结构还是真的很常见的问题C而我只是盲目?

在这里,我的目标不仅是初始化数组,而且还要在创建后访问数据并修改/传递给函数。

iBug

这是因为在cam定义该行之后,后续的“赋值”不再是初始化

初始化实例,您必须将“赋值”放在定义的位置:

Camera cam = { {.5, 1., 0.} };

或指定成员:

Camera cam = { .eye = {.5, 1., 0.} };

请注意,cam.target由于未为其指定初始值,因此这还将自动归零

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章