C++ GCC编译器中的内联深度

C++ GCC编译器中的内联深度,c++,optimization,gcc,inline-functions,C++,Optimization,Gcc,Inline Functions,我已经研究过了 内联说明符是编译器应该尝试的提示 以内联方式生成代码[…],而不是为 函数一次,然后通过通常的函数调用调用 机制 问题: 如果关闭了GCC编译器的优化,是否忽略内联说明符 当递归调用内联函数时,哪个编译器选项决定“内联深度”,直到它遵循正常的函数调用机制 如果在for循环中调用内联函数,是否会出现相同的“内联深度” 如果关闭了GCC编译器的优化,是否忽略内联说明符 是的,如果在GCC中关闭优化,则不会内联任何函数。这相当于在编译期间使用-fno inline标志。看到这个了吗 -

我已经研究过了

内联说明符是编译器应该尝试的提示 以内联方式生成代码[…],而不是为 函数一次,然后通过通常的函数调用调用 机制

问题:

  • 如果关闭了GCC编译器的优化,是否忽略内联说明符
  • 当递归调用内联函数时,哪个编译器选项决定“内联深度”,直到它遵循正常的函数调用机制
  • 如果在for循环中调用内联函数,是否会出现相同的“内联深度”
  • 如果关闭了GCC编译器的优化,是否忽略内联说明符

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

    -fno内联

    不要注意内联关键字。通常,此选项用于防止编译器内联扩展任何函数。请注意,如果不进行优化,则无法内联扩展任何函数。

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


    选项
    max inline recursive depth
    max inline recursive depth auto
    。默认深度为8。

    除了-fno-inline,还需要使用-fno-Default-inline来禁用类中的内联函数。 当您使用gdb进入这些内联函数时,这非常有用