'sizeof' 对不完整类型结构的无效应用
invalid application of 'sizeof' to an incomplete type struct
这让我有点困惑,因为它在过去有效。
我有一个 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 中,我正在尝试像这样分配一个 vector3_scalar:
#include "../headers/vector3_scalar.h"
struct vector3_scalar* v = (struct vector3_scalar*)malloc(sizeof(struct vector3_scalar)); //<--- error occurs here
但是我得到了 'sizeof' 对不完整类型结构 vector3_scalar
的无效应用
我也试过将 common_structs.h 直接包含在 .c 文件中,但这似乎也无济于事。
在这种情况下我做错了什么?
struct {
float p[3];
} vector3_scalar;
这声明了一个名为 vector3_scalar
且类型为 "unnamed struct" 的变量。你要
struct vector3_scalar {
float p[3];
};
更好
typedef struct {
float p[3];
} vector3_scalar;
然后到处使用 vector3_scalar
(而不是 struct vector3_scalar
)。
这让我有点困惑,因为它在过去有效。
我有一个 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 中,我正在尝试像这样分配一个 vector3_scalar:
#include "../headers/vector3_scalar.h"
struct vector3_scalar* v = (struct vector3_scalar*)malloc(sizeof(struct vector3_scalar)); //<--- error occurs here
但是我得到了 'sizeof' 对不完整类型结构 vector3_scalar
的无效应用我也试过将 common_structs.h 直接包含在 .c 文件中,但这似乎也无济于事。
在这种情况下我做错了什么?
struct {
float p[3];
} vector3_scalar;
这声明了一个名为 vector3_scalar
且类型为 "unnamed struct" 的变量。你要
struct vector3_scalar {
float p[3];
};
更好
typedef struct {
float p[3];
} vector3_scalar;
然后到处使用 vector3_scalar
(而不是 struct vector3_scalar
)。