One of the Plan 9 C enhancements makes this even easier by permitting the fields of these structs to be accessed directly.
struct A {
int x, y;
};
struct B {
union {
struct A 2d;
struct { int x, y; };
}
int z;
};
...
struct B foo;
foo.x = foo.2d.y = foo.z = 0;
you can access x and y as members of B or A.