GCC中的枚举器属性

ano*_*nol 3 c enums gcc

GCC的在线文档声称它支持枚举器属性:

GCC允许在枚举器上设置属性.

然后它给出了使用这些属性的代码示例:

 enum E {
   oldval __attribute__((deprecated)),
   newval
 };

 int
 fn (void)
 {
   return oldval;
 }
Run Code Online (Sandbox Code Playgroud)

但是当我在我的GCC(4.8.4)上尝试它时,我收到一个错误:

t.c:2:15: error: expected ‘,’ or ‘}’ before ‘__attribute__’
        oldval __attribute__((deprecated)),
               ^
Run Code Online (Sandbox Code Playgroud)

我需要在某个地方启用它们吗?或者使用不同的GCC?

请注意,Clang也声称支持这个C扩展,但是使用Clang它可以正常工作.

Sha*_*our 5

您正在查看的文档是指最新的开发分支,但如果我们转到gcc在线文档并查看gcc 5.2手册(最新版本),我们看不到枚举器属性部分.这就解释了为什么它的这个特性适用于gcc头版本而不是旧版本.

所以这是一个相对较新的功能,仅在头部分支中可用,并且不是任何其他版本的一部分(尚未).铛似乎对此表示支持所有的方式回到3.0.