6.7.13.1 引言
属性是什么
属性用于为类型、对象、标识符、语句块等源程序构造提供附加信息。
属性由属性记号标识。
属性记号可以是:
- 标准属性标识符;
- 带前缀的属性记号,用于实现自定义属性。
支持情况
本标准规定的标准属性是否被实现支持,由实现定义,并且支持是可选的。
本标准未规定的属性记号,其行为由实现定义。
实现若不支持某个属性记号,则该属性会被忽略。
“附着到”谁
标准把属性说成是“附着到某个源程序构造上”。
它具体附着到谁,由属性出现的语法位置决定。
对每个单独属性,标准对应条款还会进一步限制:它允许附着到哪些构造上。
因此,一段属性说明符序列里只能出现那些允许应用到当前构造的属性。
标准属性的双拼写
对本标准规定的标准属性
attr,写成[[attr]]与写成[[__attr__]]在语义上完全相同,只是拼写不同。标准还建议实现对它们自己提供的带前缀属性也采用类似的双拼写约定。
__has_c_attribute
各标准属性在传给
__has_c_attribute时应返回什么值,会在各自小节中单独写明。这些值的历史版本在附录
M中可查。
推荐实践
- 标准建议实现支持文档中定义的全部标准属性。