#include // testing which features are valid in extended GNU cc // todo: pointer()->field for %maps int main(int argc, char **argv) { void variant(void) { // looks like the gcc documentation on anonymous structs doesn't // apply here :-( http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Unnamed-Fields.html#Unnamed%20Fields // probably I have too early a version. struct varfm { union { struct { unsigned char a, b, c, d; } variant1; struct { int w; } variant2; } u; } var; var.u.variant2.w = 0x01234567; fprintf(stdout, "%02x %02x %02x %02x\n", var.u.variant1.a, var.u.variant1.b, var.u.variant1.c, var.u.variant1.d); } int i, j; typedef struct fm {int i;} fm; fm actual; fm *pointer; pointer = &actual; actual.i = 1; i = pointer->i; j = (*pointer).i; (*pointer).i = 2; variant(); return(0); }