深度

2012-06-24 54 views
8

我已经研究了深度

内联说明符的提示,编译器,它应该尝试 生成代码[...]内联,而不是放下了代号为 功能一次,然后通过通常的函数调用 机制。

问题:

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

回答

7

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

是的,如果在GCC中关闭优化,则不会内联函数。这相当于在编译期间使用-fno-inline标志。看到此link

-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.

2

除-fno-inline外,还需要使用-fno-default-inline禁用类中的内联函数。 当你使用gdb进入这些内联函数时,这很有用。