我发现了以下函数定义:
static inline __attribute__((always_inline)) int fn(const char *s)
{
return (!s || (*s == '\0'));
}
我想了解 inline __attribute__((always_inline))
的含义?
gcc
的 always_inline
文档是不完整的。
always_inline
属性使得 gcc
编译器:
-fno-inline
(这就是文档所说的)。alloca
调用的函数,而 inline
关键字永远不会这样做。always_inline
,则不生成具有外部链接的函数的外部定义。gcc
源代码,因此可能会随时更改,没有警告。
一个有趣的基准测试:always_inline
性能。