我找到了以下函数定义:
static inline __attribute__((always_inline)) int fn(const char *s)
{
return (!s || (*s == '\0'));
}
我想知道inline __attribute__((always_inline))
的含义?
答案 0 :(得分:15)
即使禁用了优化,它也会强制编译器内联函数。查看this documentation了解详情。
答案 1 :(得分:10)
-fno-inline
经常提到的gcc文档不准确。
此属性使编译器忽略alloca
(这是文档所说的)和内联限制,因此无论如何都要内联函数。此外,它还会使用inline
次调用来内联函数,char*
关键字永远不会。
一个有趣的bechmark:always_inline
performance。