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

dev*_*per 12 c gcc

我找到了以下函数定义:

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

而且我想知道它的含义inline __attribute__((always_inline))

Max*_*kin 21

经常提到的gcc文档always_inline是不准确的.

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

一个有趣的bechmark:always_inline 性能.

  • 该答案比标记答案更具信息性。 (4认同)

Man*_*726 19

即使禁用了优化,它也会强制编译器内联函数.有关更多信息,请查看此文档.