标准属性和GNU“__attribute __”之间有什么区别?

时间:2014-12-13 21:24:38

标签: c++ gcc attributes

请注意,此问题与 C ++ 有关,因此以下问题不适用于我。

__attribute__ in C

另外,最佳答案仅包含链接,并不能解释任何问题。 {_ 3}},形式__attribute __(( attribute-list ))是C中的扩展,但也存在于C ++模式中。当然,C ++也有属性,我称之为"标准属性"。这两者似乎完全不同,所以我要求总结主要差异以及它们如何相互作用。

  • 我应该何时使用另一个?

  • 在C ++中使用__attribute__是否有意义?

1 个答案:

答案 0 :(得分:0)

拥有两组属性注释的原因主要是历史原因。 C和C ++缺乏表达likelyfallthrough之类的有用代码注释的方法,因此每个编译器供应商都发明了自己的扩展以支持客户的要求(Visual Studio使用__declspec,而GNU使用{ {1}})。最近,我们还获得了C ++ 11属性,以使其更加混乱。

对于仅C ++ 11的代码,您应该使用新的标准语法。对于其他所有内容(C或C ++ 11之前的客户端),最好在库的标头中使用传统的可移植宏:

__attribute__