Stack too deep, try removing local variables.

1.看了一下社区里面的文章,有个用大括号的处理方式,感觉挺方便,我把我定义变量的地方用大括号括起来发现没什么用,guess.png 请教一下这个大括号应该怎么使用才有效?

2.不是很明白16个是怎么算的

// SPDX-License-Identifier: MIT
pragma solidity 0.7.1;

contract StackTooDeepTest1 {
    function addUints(
        uint256 a,uint256 b,uint256 c,uint256 d,uint256 e,uint256 f,uint256 g,uint256 h,uint256 i
    ) external pure returns(uint256) {

        return a+b+c+d+e+f+g+h+i;
    }
}

比如这个代码入参9个没问题,返回的为什么也按9个算,而不是1个?

3.如果合约函数A里面调用了另一个函数B,函数B里面有一个入参和一个出参,那么这两个参数也算在A的16个里面吗?

请先 登录 后评论

1 个回答

Tiny熊
  擅长:智能合约,以太坊
请先 登录 后评论
  • 2 关注
  • 0 收藏,3594 浏览
  • 二毛 提出于 2020-11-14 22:32