Supongamos que tenemos dos estructuras:Struct compatibilidad puntero
typedef struct Struct1
{
short a_short;
int id;
} Struct1;
typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;
¿Es seguro enviar contenido desde Struct2 *
a Struct1 *
? ¿Qué dice la especificación de ANSI sobre esto? Sé que algunos compiladores tienen la opción de reordenar los campos de las estructuras para optimizar el uso de la memoria, lo que puede hacer que las dos estructuras sean incompatibles. ¿Hay alguna forma de asegurarse de que este código sea válido, independientemente de la bandera del compilador?
¡Gracias!
* Reordenar * los miembros no está permitido por la norma AFAIK. Sin embargo, creo que sería posible insertar diferentes cantidades de relleno. – delnan
@delnan Entonces, ¿qué estructura 'embalaje' solo desactivará la alineación? ¡Gracias, no lo sabía! – Waneck