这对我来说有点令人费解,因为它过去有效。
我有一个vector3结构和一个matrix4结构,它们是这样定义的
common_struct.h看起来像这样
struct {
float m[16];
} mat4_scalar;
struct {
float p[3];
} vector3_scalar;
然后在我的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);
在我的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
但我将'sizeof'无效应用于不完整类型struct vector3_scalar
我也尝试将common_structs.h直接包含在.c文件中,但这似乎也无济于事。
在这种情况下我做错了什么?
答案 0 :(得分:7)
struct {
float p[3];
} vector3_scalar;
这声明了一个名为vector3_scalar
的变量,类型为&#34;未命名的struct&#34;。你想要
struct vector3_scalar {
float p[3];
};
更好的
typedef struct {
float p[3];
} vector3_scalar;
然后在任何地方使用vector3_scalar
(不是struct vector3_scalar
)。