2015-10-13 2 views
-1

Это немного озадачивает меня, потому что он работал в прошлом.Недопустимое применение 'sizeof' к незавершенному типу struct

У меня есть VEctor3-структуру и matrix4 структур, которые определены как этот

enter image description here

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); 

in my vector3_s calar.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, но это тоже не помогает.

Что я делаю неправильно в этой ситуации?

+0

Нет, он никогда не работал –

+0

спасибо за проницательный комментарий @DavidHeffernan, который действительно помог мне решить мою проблему. – user1610950

+0

Ну, это никогда не работало? Другими словами, вопрос содержит ошибочную информацию. –

ответ

7
struct { 
    float p[3]; 
} vector3_scalar; 

Это объявляет переменную с именем vector3_scalar типа «безымянного структуры». Вы хотите

struct vector3_scalar { 
    float p[3]; 
}; 

еще лучше

typedef struct { 
    float p[3]; 
} vector3_scalar; 

, а затем использовать только vector3_scalar (не struct vector3_scalar) во всем мире.

+0

спасибо, я делал typedef struct .... в начале и в этом работал. Я просто забыл правильно настроить свою структуру. Я переместил typedefs в заголовок, чтобы у меня были разные реализации тех, neon, simd, scalar, поэтому, если вы используете код, api не изменяется, но со временем я могу добавлять улучшения. – user1610950

Смежные вопросы