使用std = c99

时间:2015-08-04 00:11:00

标签: c gcc inline

我正在写一个纯c代码(为了快速性能),我希望gcc至少可以扩展我声明为"静态内联"的所有函数。 (因为我使用std = c99,内联的语义已经改变,静态内联是首选的),其中一些函数包括矩阵操作,堆上/下筛选等,通常是很多次发生的相当小的操作。有没有办法通过指定GCC的任何选项来实现这一目标?我已经启用-o3了,我遇到过某个地方,通过-o3和"静态内联"函数声明,所有函数调用都将被扩展。真的吗?我该如何验证?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试__attribute__((always_inline)),但一般情况下,正常inline应该足够了,除非您选择-Os。如果没有内联函数,gcc可能有充分的理由不这样做。

更好的方法是使用分析和链接时间优化(LTO)。一般来说,手动优化代码应该是最后一次重写。

当然,您可以验证函数是否已内联:只需查看生成的代码。