Ich stieß auf den folgenden Code, und wurde gesagt, dass es bedeutet, dass COL_8888_RED
ist "endian unabhängig". Warum? Was macht diesen Endian unabhängig? (Ich habe die ursprünglichen Codierer gefragt, aber sie sind nicht wieder zu mir bekommen ... Heck vielleicht sie weiß es auch nicht.)Was macht diesen Code "endian unabhängig"?
union _colours {
uint8 c[3][4];
uint32 alignment;
};
static const union _colours col_8888 = {
{ /* B G R A in memory */
{ 0x00, 0x00, 0xFF, 0xFF, }, /* red */
{ 0x00, 0xFF, 0x00, 0xFF, }, /* green */
{ 0xFF, 0x00, 0x00, 0xFF, }, /* blue */
}
};
#define COL_8888_RED *((uint32 *)&col_8888.c[0])
Was endian unabhängig sein kann, ist nicht sicher, wenn man bedenkt, dass einige andere Hardware ARGB, BGRA, RGBA, usw. wählen können ... –
@ dash-tom-bang, ja, andere Arten von Displays benötigen rot, Grün und Blau müssen in verschiedenen Byte-Reihenfolgen definiert sein. Und in diesem Fall definiert die 'col_8888'-Vereinigung rot, grün und blau für eine bestimmte Art von Anzeige und definiert somit eine bestimmte Byte-Reihenfolge - sie wird nur * verwendet, um auf diese Art von Anzeige zu schreiben. Andere Anzeigetypen erfordern unterschiedliche Definitionen von Rot, Grün und Blau. – BeeBand