Herakles
Profifragensteller
Moin!
Ich programmiere gerade in AVRStudio5, einer Umgebung für die Entwicklung auf Mikroprozessoren von ATMEL.
In einem der Beispielprojekte habe ich etwas für mich völlig Neues gefunden. Dort wird folgender Code verwendet (und er kompiliert auch sauber durch):
In dem Struct finde ich kein "th_block", lediglich ein "tu_block" innerhalb des enthaltenen UNIONs.
Wie kann das funktionieren? Meinem Verständnis zufolge kann doch nur auf Elemente eines struct zugegriffen werden, die auch namentlich korrekt sind...!?
Kann mir da jemand aushelfen?
Beste Grüße
Herakles
Ich programmiere gerade in AVRStudio5, einer Umgebung für die Entwicklung auf Mikroprozessoren von ATMEL.
In einem der Beispielprojekte habe ich etwas für mich völlig Neues gefunden. Dort wird folgender Code verwendet (und er kompiliert auch sauber durch):
Code:
struct tftphdr {
uint16_t th_opcode; /* packet type */
union {
uint16_t tu_block; /* block # */
int16_t tu_code; /* error code */
uint8_t tu_stuff[1]; /* request packet stuff */
}
__attribute__ ((packed))
th_u;
uint8_t th_data[1]; /* data or error string */
}
(...)
uint8_t data[SEGSIZE+sizeof(struct tftphdr)];
struct tftphdr *answer = (struct tftphdr *)data;
(...)
answer->th_block = htons(block++);
In dem Struct finde ich kein "th_block", lediglich ein "tu_block" innerhalb des enthaltenen UNIONs.
Wie kann das funktionieren? Meinem Verständnis zufolge kann doch nur auf Elemente eines struct zugegriffen werden, die auch namentlich korrekt sind...!?
Kann mir da jemand aushelfen?
Beste Grüße
Herakles