Supponiamo di avere due struct:Struct puntatore compatibilità
typedef struct Struct1
{
short a_short;
int id;
} Struct1;
typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;
E 'sicuro di gettare Struct2 *
-Struct1 *
? Cosa dice la specifica ANSI a riguardo? So che alcuni compilatori hanno la possibilità di riordinare i campi delle strutture per ottimizzare l'utilizzo della memoria, che potrebbe rendere le due strutture non compatibili. C'è un modo per essere sicuro che questo codice sarà valido, indipendentemente dal flag del compilatore?
Grazie!
* Riordino * i membri non sono consentiti dalla norma AFAIK. Credo che l'inserimento di diverse quantità di imbottitura sarebbe comunque consentito. – delnan
@delnan Oh, quindi quella struct 'packing' disabiliterà solo l'allineamento? Grazie, non lo sapevo! – Waneck