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