GCC中的枚举器属性
GCC声称它支持枚举器属性:GCC中的枚举器属性,c,gcc,enums,C,Gcc,Enums,GCC声称它支持枚举器属性: enum E { oldval __attribute__((deprecated)), newval }; int fn (void) { return oldval; } GCC允许在枚举数上设置属性 然后给出了使用这些属性的代码示例: enum E { oldval __attribute__((deprecated)), newval }; int fn (void) { return oldv
enum E {
oldval __attribute__((deprecated)),
newval
};
int
fn (void)
{
return oldval;
}
GCC允许在枚举数上设置属性
然后给出了使用这些属性的代码示例:
enum E {
oldval __attribute__((deprecated)),
newval
};
int
fn (void)
{
return oldval;
}
但当我在我的GCC(4.8.4)上尝试时,我得到一个错误:
t.c:2:15: error: expected ‘,’ or ‘}’ before ‘__attribute__’
oldval __attribute__((deprecated)),
^
我需要在某个地方启用它们吗?或者使用不同的GCC
请注意,Clang还声称支持此C扩展,但使用Clang它可以正常工作。您正在查看的文档引用了最新的开发分支,但是如果我们转到并查看最新版本,我们将看不到枚举器属性部分。这就解释了为什么该功能可以在旧版本中使用,但不能在旧版本中使用
因此,这是一个相对较新的功能,仅在head分支中可用,并且还不属于任何其他版本。叮当声似乎一直在响。似乎接受了GCC 5.2失败的消息。在我看来,这就像是GCC或文档中的一个bug(可能它们不再受支持,但它们忘记了更新文档)。这看起来像是一个新的发展,你正在寻找出血版本的在线文档。请参见在2015年5月至5月实施该计划。如果你看这个,你就找不到了!注意,任何支持任何类型属性的编译器都应该支持C++11
[[attribute]]
语法。这适用于即将推出的C++1z标准中的枚举数,但实际上语法适用于较旧的方言。