Suponiendo que el siguiente archivo de encabezado corresponde, por ejemplo, a una biblioteca compartida. La función exportada toma un puntero a una estructura personalizada definida en esta cabecera:C struct alineación y portabilidad en los compiladores
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
Si la biblioteca compartida se construye utilizando un compilador y luego se utiliza a partir del código C integrado con otro compilador podría no funcionar debido a una diferente alineación de memoria, como Memory alignment in C-structs sugiere. Entonces, ¿hay alguna manera de hacer que la definición de mi estructura sea portátil en diferentes compiladores en la misma plataforma?
Estoy interesado específicamente en la plataforma Windows (aparentemente no tiene un ABI bien definido), aunque sería curioso conocer otras plataformas también.
No, a menos que alguien te haya garantizado eso. –
Sin duplicado. Al menos no de la pregunta seleccionada. Este puede sostenerse por sí mismo. –
¿Alguna pregunta que contenga palabras "struct alignment" es automáticamente un duplicado de esa otra pregunta, incluso cuando no tiene nada que ver con eso? –