Анонимные структуры были добавлены в стандарт C11, поэтому
typedef struct {
struct {int a, b};
int c;
} abc_struct;
является допустимым и стандартным. В рамках стандарта также используется typedef вместо полного объявления структуры? Например: [
typedef struct {
int a, b;
} ab_struct;
typedef struct {
ab_struct;
int c;
} abc_struct;
] В документации GCC сказано, что это расширение Plan 9, но тогда оно работает в несколько компиляторов, которые я пробовал (включая GCC ...). По моему прочтению самого стандарта, Я думаю, что это нормально, но при таком внимательном чтении легко облажаться.