请注意,此问题与 C ++ 有关,因此以下问题不适用于我。
另外,最佳答案仅包含链接,并不能解释任何问题。 {_ 3}},形式__attribute __(( attribute-list ))是C中的扩展,但也存在于C ++模式中。当然,C ++也有属性,我称之为"标准属性"。这两者似乎完全不同,所以我要求总结主要差异以及它们如何相互作用。
我应该何时使用另一个?
在C ++中使用__attribute__是否有意义?
答案 0 :(得分:0)
拥有两组属性注释的原因主要是历史原因。 C和C ++缺乏表达likely
或fallthrough
之类的有用代码注释的方法,因此每个编译器供应商都发明了自己的扩展以支持客户的要求(Visual Studio使用__declspec
,而GNU使用{ {1}})。最近,我们还获得了C ++ 11属性,以使其更加混乱。
对于仅C ++ 11的代码,您应该使用新的标准语法。对于其他所有内容(C或C ++ 11之前的客户端),最好在库的标头中使用传统的可移植宏:
__attribute__