C11匿名结构通过typedef?

bk.*_*bk. 15 c struct c11

C11标准中添加了匿名结构,因此

typedef struct { 
    struct {int a, b};
    int c; 
} abc_struct;
Run Code Online (Sandbox Code Playgroud)

是有效和标准的.使用typedef代替完整的struct声明是否也在标准范围内?例如:

typedef struct { 
    int a, b;
} ab_struct;

typedef struct { 
    ab_struct;
    int c; 
} abc_struct;
Run Code Online (Sandbox Code Playgroud)

GCC文档说这是Plan 9的扩展,但它在我尝试过的少数编译器中工作(包括GCC ......).通过我对标准本身的阅读,我认为没关系,但这是一种容易搞砸的近距离阅读.

oua*_*uah 10

这显然是由gcc团队的Joseph S. Myers向C委员会提出的一个问题.答案是否定的,它在C11中无效.

看到答案:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1549.pdf

而迈尔斯的评论:

根据N1549,本周的伦敦WG14会议同意不允许使用typedef来声明匿名结构和联合字段.

来源http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01151.html

有人问在SC22WG15.12205见5.28 SC22WG14.12205,匿名结构(N1425)http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1490.pdf