Ich habe eine anonyme Union in einer Struktur verschachtelt, sowie andere allgemeine Felder. Gibt es einen Grund, die Union an einer bestimmten Stelle in der Struktur zu platzieren (z. B. zuerst oder zuletzt)?Wo eine verschachtelte Union in einer Struktur in C platzieren?
Zum Beispiel ist dies:
typedef struct _Message
{
MessageType type;
union
{
SystemMessageArgs systemArgs;
OtherMessageArgs usbArgs;
};
} Message;
besser als diese:
typedef struct _Message
{
union
{
SystemMessageArgs systemArgs;
OtherMessageArgs usbArgs;
};
MessageType type;
} Message;
in irgendeiner Weise?
Der Kontext eingebettet-C, speziell TIs MSP430
Es gibt keinen spezifischen Unterschied zwischen den beiden. Für einige sehr fortgeschrittene und spezifische Speicherlayout-Gründe könnte es einen Unterschied geben, aber wenn Sie keine besonderen Bedürfnisse haben, sind sie vollkommen äquivalent. –
Ich denke nicht, hoffe, dass Ihre Gewerkschaftstypen die gleiche Länge haben. Ich bevorzuge die Vereinigung, um das letzte Element zu sein – Miguel13366
Sie können 'sizeof' verwenden, um zu sehen, welche Struktur weniger Füllbytes hat. – mch