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

问题描述 投票:2回答:1

请注意,这个问题是关于C ++所以以下问题并不适用于我。

__attribute__ in C

加顶的答案只包括链接并没有真正说明什么。 GCC attributes,表单__attribute __((属性表))的单位都是℃的延伸但在C ++模式存在太多。当然,C ++也具有我称之为“标准属性”属性。这两个似乎是完全不同的,所以我要求的主要差异的摘要以及它们如何相互作用。

  • 什么时候应该使用一个比其他?
  • 是否有任何一点在C ++中使用__attribute__?
c++ gcc attributes
1个回答
0
投票

对于具有两组属性注释的原因主要是历史的。 C和C ++缺乏表达有用的代码注释像likelyfallthrough方法,使每个编译器厂商发明了他自己的扩展,以支持任何由客户要求(Visual Studio中使用__declspec和GNU使用__attribute__)。最近,我们还得到了C ++ 11点的属性,使这甚至混乱。

对于C ++ 11只代码,你应该probly使用新的标准语法。对于一切(C或预C ++ 11级的客户),你最好使用在库的头传统便携宏:

#ifdef __GNUC__
# define MYLIB_NOINLINE __attribute__((noinline))
#elif defined _MSC_VER
# define MYLIB_NOINLINE __declspec(noinline)
#else
# error Unknown compiler
#endif
© www.soinside.com 2019 - 2024. All rights reserved.