Załóżmy, że mamy dwa konstrukcjom:Struct kompatybilność wskaźnik
typedef struct Struct1
{
short a_short;
int id;
} Struct1;
typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;
Czy bezpieczne jest odlana z Struct2 *
do Struct1 *
? Co mówi o tym specyfikacja ANSI? Wiem, że niektóre kompilatory mają możliwość zmiany kolejności pól structs w celu optymalizacji wykorzystania pamięci, co może spowodować, że dwie struktury będą niekompatybilne. Czy jest jakiś sposób, aby upewnić się, że ten kod będzie ważny, niezależnie od flagi kompilatora?
Dziękujemy!
* Zmiana kolejności * członkowie nie mogą korzystać ze standardowego AFAIK. Sądzę, że dozwolone byłoby wstawianie różnych ilości wypełnień. – delnan
@delnan Oh więc to, że struct 'packing' wyłącza tylko wyrównanie? Dzięki, nie wiedziałem o tym! – Waneck