下のような構造体の中にメンバ名のない構造体を定義できたり
a.aとかa.bでメンバ変数にアクセスできるのだけど、
これってGCC拡張?それともISOやANSIで規定されてるもの?

===
#include <stdio.h>
#include <inttypes.h>

int
main(void)
{
  struct {
    struct {
      uint32_t a;
      struct {
        uint8_t b[4];
      };
    };
    uint64_t c;
  } a = {{0, {{1, 2, 3, 4}}}, 0xAA55AA55AA55AA55ULL};

  a.a = 0x12345678;

  printf("%02x\n", a.b[2]);
  printf("%016llx\n", a.c);
  return 0;
}