问题描述
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
因此这种情况下的优化将完全消除递归。
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
因此这种情况下的优化将完全消除递归。