什么“内联__attribute __((always_inline))”在函数中意味着什么?

时间:2014-03-31 16:50:56

标签: c gcc

我找到了以下函数定义:

static inline __attribute__((always_inline)) int fn(const char *s)
{
  return (!s || (*s == '\0'));
}

我想知道inline __attribute__((always_inline))的含义?

2 个答案:

答案 0 :(得分:15)

即使禁用了优化,它也会强制编译器内联函数。查看this documentation了解详情。

答案 1 :(得分:10)

-fno-inline经常提到的gcc文档不准确。

此属性使编译器忽略alloca(这是文档所说的)和内联限制,因此无论如何都要内联函数。此外,它还会使用inline次调用来内联函数,char*关键字永远不会。

一个有趣的bechmark:always_inline performance