【发布时间】:2020-06-08 09:37:54
【问题描述】:
假设我想用[[gnu::cold]]; 标记一个非内联函数,该属性应该放在标题中的声明中,还是应该与源文件中的定义一起使用?假设我不会使用 LTO,只是希望针对二进制大小而不是执行速度优化特定函数。
标题示例:
[[gnu::cold]] void rarely_called_func();
源文件示例:
[[gnu::cold]] void rarely_called_func() { ... }
另外,它应该在声明/定义中的哪个位置:
/* A */ int /* B */ func () /* C */;
【问题讨论】:
-
这对我来说似乎不是一个 C 问题...
-
@AnttiHaapala GCC 绝对允许 C 函数具有自定义属性。
-
不是那种语法。
-
@AnttiHaapala 很好,假设我写了
__attribute__((cold))。 -
gcc 和 clang 支持该格式作为扩展,并且默认情况下将在 gcc 中为 C2X 启用。
标签: c++ c gcc optimization attributes