gpt4 book ai didi

c++ - 标准属性和 GNU "__attribute__"之间有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:43 26 4
gpt4 key购买 nike

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

__attribute__ in C

此外,最佳答案仅包含链接,并没有真正解释任何内容。 GCC attributes ,形式为 __attribute__((attribute-list)) 是 C 中的扩展,但也存在于 C++ 模式中。当然,C++ 也有属性,我称之为“标准属性”。两者似乎完全不同,所以我要求对主要差异及其相互作用的方式进行总结。

  • 我什么时候应该使用一个而不是另一个?

  • 在 C++ 中使用 __attribute__ 有什么意义吗?

最佳答案

具有两组属性注释的原因主要是历史原因。 C 和 C++ 缺乏表达有用的代码注释的方法,如 likelyfallthrough 因此每个编译器供应商都发明了自己的扩展来支持客户的任何要求(Visual Studio 使用 __declspec 和 GNU 使用 __attribute__)。最近,我们还获得了 C++11 属性,使它变得更加困惑。

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

#ifdef __GNUC__
# define MYLIB_NOINLINE __attribute__((noinline))
#elif defined _MSC_VER
# define MYLIB_NOINLINE __declspec(noinline)
#else
# error Unknown compiler
#endif

关于c++ - 标准属性和 GNU "__attribute__"之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com