Intento obtener el tamaño de una estructura que se definió en un archivo fuente diferente (other.c) para mantenerlo oculto.
En el otro.h:
typedef struct X x_t;
En el otro.c:
struct X{ int y; int z; };
Ahora quiero en main.c obtener el tamaño de esta estructura.
#include "other.h" int main(){ x_t *my_x; my_x = malloc(sizeof(struct x_t)); return 0;}
Pero esto me da el siguiente error:
error: invalid application of 'sizeof' to incomplete type 'struct x_t'
Alguien puede ayudarme? ¡Gracias!
Todo el propósito de tener una struct
oculta es controlar cuidadosamente su construcción, su destrucción y el acceso a los contenidos.
Las funciones para construir, destruir, obtener el contenido y establecer el contenido deben proporcionarse para que la struct
oculta sea útil.
Aquí hay un ejemplo de lo que podrían ser los archivos .h y .c:
otro.h:
typedef struct X x_t; x_t* construct_x(void); void destruct_x(x_t* x); void set_y(x_t* x, int y); int get_y(x_t* x); void set_z(x_t* x, int z); int get_z(x_t* x);
otro.c:
struct X { int y; int z; }; x_t* construct_x(void) { return malloc(sizeof(x_t)); } void destruct_x(x_t* x) { free(x); } void set_y(x_t* x, int y) { x->y = y; } int get_y(x_t* x) { return x->y; } void set_z(x_t* x, int z) { x->z = z; } int get_z(x_t* x) { rteurn x->z; }