多年来,我听说过许多很酷的GCC扩展和内置函数,但在考虑使用它们之前,我总是忘记它们。
有哪些很酷的GCC扩展和内置插件,以及一些如何使用它们的真实示例?
答案 0 :(得分:3)
GCC提供了许多功能作为编译器扩展,不在头脑中,我经常使用:
<强> Statement Expressions 强>
Designated Initializers
GCC网站 here 上还有更多文档。
<强>警告:强> 但是,使用任何形式的编译器扩展都会使您的代码在其他编译器中不可移植,因此请以此风险使用它们。
答案 1 :(得分:2)
如果你想要gcc extensions有用的实际例子那么GCC hacks in the Linux kernel是一个有趣的选择,因为如果它在Linux内核中使用那么它可能是一个很好的迹象它有一些现实世界的影响。如前所述,使用扩展程序确实会使您的代码不可移植,但clang does make an effort to support gcc extensions可能会减轻某些影响。
一个未涵盖但在Linux内核中大量使用的扩展statement expressions,另见Are compund statements (blocks) surrounded by parens expressions in ANSI C?。
本文涵盖以下功能:
答案 2 :(得分:1)
我最近偶然发现了很多非常有助于模仿新C11标准的内容。实际上许多新功能已经存在,但语法不同。
__sync_...
内置)我已经写了一些内容,以及如何在blog中使用C11接口。
C11功能未涵盖的两个功能非常好,而且我非常希望在未来的标准版本中看到
__typeof__