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

发布于 2024-11-01 15:47:41 字数 80 浏览 0 评论 0原文

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

Enabling -Winline on my project produces a whole lot of output which I don't really understand. Does anyone know how to use this output to figure out why my particular function wasn't inlined?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

勿忘心安 2024-11-08 15:47:41

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

编译器使用多种
启发法来确定是否
内联函数。例如,
编译器考虑到
内联函数的大小和
内联的数量
当前已经完成
功能。因此,看似
来源的微小变化
程序可能会导致警告
由 -Winline 制作出现或
消失。

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

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

Well, according to my gcc man page...

The compiler uses a variety of
heuristics to determine whether or not
to inline a function. For example,
the compiler takes into account the
size of the function being inlined and
the amount of inlining that has
already been done in the current
function. Therefore, seemingly
insignificant changes in the source
program can cause the warnings
produced by -Winline to appear or
disappear.

I don't believe that you can force the compiler to inline your function; it's an implementation detail that could even change when the compiler is updated. Besides, as long as the compiler's choice causes your function to run faster, is there any particular reason that you care whether the function is actually inlined or not?

Of course, if you really want to inline your function for some reason, you could probably just use a macro to do so.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文