use*_*950 -1 c struct incomplete-type
这对我来说有点令人费解,因为它在过去有效.
我有一个vector3结构和一个matrix4结构,它们是这样定义的
common_struct.h看起来像这样
struct {
float m[16];
} mat4_scalar;
struct {
float p[3];
} vector3_scalar;
Run Code Online (Sandbox Code Playgroud)
然后在我的vector3_scalar.h中我有这样的函数:
#include "../../common/common_structs.h"
struct vector3_scalar* vec3_zero(void);
struct vector3_scalar* vec3_up(void);
struct vector3_scalar* vec3_right(void);
struct vector3_scalar* vec3_forward(void);
Run Code Online (Sandbox Code Playgroud)
在我的vector3_scalar.c中我试图像这样malloc一个vector3_scalar:
#include "../headers/vector3_scalar.h"
struct vector3_scalar* v = (struct vector3_scalar*)malloc(sizeof(struct vector3_scalar)); //<--- error occurs here
Run Code Online (Sandbox Code Playgroud)
但我无法将'sizeof'应用于不完整类型的struct vector3_scalar
我也尝试将common_structs.h直接包含在.c文件中,但这似乎也没有帮助.
在这种情况下我做错了什么?
struct {
float p[3];
} vector3_scalar;
Run Code Online (Sandbox Code Playgroud)
这声明了一个名为vector3_scalar"unnamed struct" 的变量.你要
struct vector3_scalar {
float p[3];
};
Run Code Online (Sandbox Code Playgroud)
更好
typedef struct {
float p[3];
} vector3_scalar;
Run Code Online (Sandbox Code Playgroud)
然后在任何地方使用vector3_scalar(不struct vector3_scalar).