如何使用 gcc 的内联报告 (-Winline)

Jus*_*cle 5 c c++ gcc inline

在我的项目上启用-Winline会产生大量我不太理解的输出。有谁知道如何使用此输出来找出为什么我的特定函数没有内联?

Chr*_*ick 3

嗯,根据我的 gcc 手册页......

编译器使用各种启发式方法来确定是否内联函数。例如,编译器会考虑内联函数的大小以及当前函数中已完成的内联量。因此,源程序中看似微不足道的更改可能会导致 -Winline 产生的警告出现或消失。

我不相信你可以强制编译器内联你的函数;当编译器更新时,它的实现细节甚至可能会发生变化。此外,只要编译器的选择使您的函数运行得更快,您是否有任何特殊原因关心该函数是否实际上是内联的?

当然,如果您确实想出于某种原因内联函数,您可能只需使用宏来执行此操作。