是否有支持每个 __attribute__ 的最低 gcc 版本列表?

发布于 2024-10-19 05:23:04 字数 247 浏览 2 评论 0 原文

这里的官方文档仅列出了极少数属性所需的最低版本:

http ://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

是否有每个属性添加到哪个版本的完整列表?更好的是还可以显示哪些列表与 pcc 和 tcc 兼容。

The official documentation here only lists the minimum required version for a very small number of attributes:

http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

Is there a complete list of which version each attribute was added in? Even better would be a list that also shows which ones are compatible with pcc and tcc.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

微暖i 2024-10-26 05:23:04

对于许多有用的,您可以从 glib 的 gmacros.h 复制 gcc 版本测试:
http://git.gnome.org/browse/glib/tree/glib /gmacros.h

根据您的项目,您可能还可以只使用 GLib,然后直接使用 G_GNUC_NORETURN 或其他内容来代替 __attribute__

正如 Juliano 建议的那样,原则上执行 HAVE_GCC_ATTRIBUTE_NORETURN 可能会更好,但这也可能是 YAGNI 的工作,具体取决于您的项目。

For a lot of the useful ones you can copy the gcc version tests from glib's gmacros.h:
http://git.gnome.org/browse/glib/tree/glib/gmacros.h

Depending on your project you may also be able to just use GLib, and then use G_GNUC_NORETURN or whatever instead of the __attribute__ directly.

It probably would be better in principle to do HAVE_GCC_ATTRIBUTE_NORETURN as Juliano suggests, but it may also be YAGNI work, depending on your project.

倾城泪 2024-10-26 05:23:04

我发现这个链接比接受的答案稍新:
https://patchwork.ozlabs.org/project/gcc /patch/[电子邮件受保护]/

显然最高可达 8.1.0。但不确定它是否完整。

I found this link which is slightly newer than the accepted answer:
https://patchwork.ozlabs.org/project/gcc/patch/[email protected]/

Apparently up to 8.1.0. Not sure it is complete though.

仅此而已 2024-10-26 05:23:04

帮自己一个忙,不要这样做。

也许你的软件有一些预编译配置/设置阶段(比如 autoconf 团队...呃!(颤抖)或者更理智的东西,比如 CMake),使用它。

编写小型测试(autoconf 宏)来检查编译器是否接受您感兴趣的 __attribute__ 以及它是否按预期工作。如果成功,请在源代码中包含的 config.h 文件中写入 HAVE_GCC_ATTRIBUTE_XXX 宏。

然后使用该宏和 #ifdef 来测试是否应该将该属性放入函数中,或者是否应该使用另一个 hack 来模拟缺少该属性。

Do yourself a favor and don't do that.

Perhaps your software has some pre-compilation configuration/setup phase (like the autoconf team... ugh! (shivers) or something more sane like CMake), use that.

Write small tests (autoconf macros) that check if the compiler accepts the __attribute__ you are interested in and if it works as expected. If successful, write a HAVE_GCC_ATTRIBUTE_XXX macro in a config.h file which is included from your source.

Then use that macro with #ifdef to test if you should put or not the attribute in the function, or perhaps if you should use another hack to emulate the lack of the attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文