

You mean ‘unnamed’ is what’s confusing you?
Normally you can do anonymous struct/union members or struct struct/union members that are tagged structs but not anonymous.
I.e. in standard C you’d have to do either:
struct foo { int baz; };
struct bar { struct foo foo; };
...
struct bar data;
data.foo.baz = 0;
or:
struct bar { struct { int baz; } foo; };
...
struct bar data;
data.baz = 0;
but to do the following, you’d need the extension:
struct foo { int baz; };
struct bar { struct foo; };
...
struct bar data;
data.baz = 0;
Unless I’m misunderstanding something, I’m pretty sure they’ve been standardized in C11. Also mentioned here.