Tja, man sieht man kommt doch nicht auf alles. Danke für den Tipp. Jetzt sieht meine "App" so aus:
Code:
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
struct ts {
uint16_t a;
uint16_t b;
uint8_t c;
uint16_t d;
};
int main (void)
{
struct ts *p;
int the_offset;
// calculate the offset (cast required as data types are different!)
the_offset = ((char *) &p->d) - ((char *) p);
printf("offset %d required to access structure element 'd' directly\n", the_offset);
}
BTW: Du castest wie ganz selbstverständlich die Pointer auf int. Ich kenne den C-Standard nicht genau genug, aber ist garantiert, dass int die selbe Größe wie int hat??? Auf AVR, 8051 und x86 ja, aber sonst?
Lesezeichen