#include <stdio.h>
// 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);
}
