【发布时间】:2021-03-05 07:26:55
【问题描述】:
我找到了以下函数定义:
static inline __attribute__((always_inline)) int fn(const char *s)
{
return (!s || (*s == '\0'));
}
而我想知道inline __attribute__((always_inline))的含义?
【问题讨论】:
我找到了以下函数定义:
static inline __attribute__((always_inline)) int fn(const char *s)
{
return (!s || (*s == '\0'));
}
而我想知道inline __attribute__((always_inline))的含义?
【问题讨论】:
always_inline 的经常引用的 gcc 文档不完整。
always_inline 属性使gcc 编译器:
-fno-inline(这是文档中所说的)。alloca 调用的函数,而 inline 关键字永远不会这样做。always_inline,则不会生成具有外部链接的函数的外部定义。以上信息来源为 gcc 源代码,如有更改,恕不另行通知。
一个有趣的基准:always_inline
performance。
【讨论】:
即使优化被禁用,它也会强制编译器内联函数。更多信息请查看this documentation。
【讨论】: