GCC编译器内联的深度

nit*_*ian 8 c++ optimization gcc inline-functions

我研究过那个

内联说明符是编译器的一个提示,它应该尝试生成代码内联,而不是为函数设置一次代码,然后通过通常的函数调用机制调用.

问题:

  1. 如果关闭GCC编译器的优化,是否忽略内联说明符?
  2. 当内联函数被递归调用时,哪个编译器选项确定"内联深度",直到它遵循正常的函数调用机制?
  3. 如果在for循环中调用内联函数,那么相同的"内联深度"是否会进入图片中?

San*_*ish 7

如果关闭GCC编译器的优化,是否忽略内联说明符?

是的,如果在GCC中关闭优化,则不会内联任何函数.它等同于-fno-inline在编译期间使用标志.看到这个链接

-fno-inline

Don't pay attention to the inline keyword. Normally this option is used to keep the compiler from expanding any functions inline. Note that if you are not optimizing, no functions can be expanded inline.

当内联函数被递归调用时,哪个编译器选项确定"内联深度",直到它遵循正常的函数调用机制?

选项max-inline-recursive-depthmax-inline-recursive-depth-auto.默认深度为8.