GCC内联C++是否在没有'inline'关键字的情况下运行?

Car*_*org 30 c++ optimization gcc inline optimizer-hints

在编译C++代码时,GCC是否会尝试通过选择未标记inline关键字的内联函数来优化速度?

AnT*_*AnT 37

是.任何编译器都可以随意内联任何函数,只要它认为这是一个好主意.海湾合作委员会也这样做.

在-O2优化级别,当编译器认为值得做(使用启发式)并且它不会增加代码的大小时,内联完成.在-O3,只要编译器认为值得做,它就会完成,无论它是否会增加代码的大小.此外,在所有优化级别(启用优化)中,仅内联调用一次的静态函数.


Mar*_*cin 8

是的,特别是如果您启用了高级别的优化.

您可以为编译器提供一个标志来禁用它:-fno-inline-functions.

  • 实际上,-fno-inline-functions禁止自动内联,-fno-inline禁止所有内联(来源:http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Switches-for-gcc.html) (2认同)