在C语言中编译时,O2优化标志对堆栈帧有什么作用?

问题描述

O2优化标志在编译时对堆栈帧有什么作用?如果您有执行递归的函数,例如:

long long fibb(long long a,long long b,int n) {
    return (--n>0)?(fibb(b,a+b,n)):(a);
}

解决方法

编译后的代码中不会有任何递归。 https://godbolt.org/z/7cWGhv

因此这种情况下的优化将完全消除递归。