我刚刚第一次遇到方括号中的属性,并且我做了一些背景阅读:http://en.cppreference.com/w/cpp/language/attributes.
至少对于 gcc 来说,似乎允许使用多种技术:
__attribute__((some_attribute))
and
[[some_attribute]]
它是否正确?什么时候允许或不允许一种技术,首选或不首选?有什么不同?
看起来像[[some_attribute]]
仅从 C++11 起才允许,对吗?
根据N4659:
10.6.1 属性语法和语义 [dcl.attr.grammar]
属性指定各种源的附加信息
类型、变量、名称、块或转换等结构
单位。
attribute-specifier-seq:
attribute-specifier-seqopt attribute-specifier
attribute-specifier:
[ [ attribute-using-prefixopt attribute-list ] ]
alignment-specifier
So, [[...]]
是标准化语法。
相反,__attribute__ ((attribute-list))
是一个语法gcc
扩大:
属性说明符的形式为__attribute__ ((attribute-list))
。属性列表是一个可能为空的、以逗号分隔的属性序列,其中每个属性是以下属性之一:
...
由于属性被引入C++11你用gcc
with C++11支持(或更新),那么这两种类型的语法都可供您使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)