Solidity报DeclarationError: Identifier not found or not unique如何解决
Solidity编译DeclarationError: Identifier not found or not unique 排查修复
问题表现
基于Solidity ^0.6.0版本编写SimpleStorage1智能合约时,编译阶段抛出DeclarationError类型错误,错误提示为Identifier not found or not unique,错误定位在contracts/simplestorage1.sol文件第7行第20列,指向store函数的参数定义位置,报错代码片段:
function store(unit256 _favoriteNumber) public { ^-----
出错的完整合约原始代码如下:
pragma solidity ^0.6.0; contract SimpleStorage1 { uint256 favoriteNumber; function store(unit256 _favoriteNumber) public { favoriteNumber = _favoriteNumber; } }
报错原因
核心问题是Solidity内置类型名拼写错误:
Solidity中256位无符号整数的内置类型名为uint256(是unsigned integer的缩写),但代码里store函数的参数类型错写为unit256,编译器无法识别这个不存在的标识符,因此触发声明类错误。
注意合约里状态变量favoriteNumber定义时用的类型是正确的uint256,仅函数参数处拼写出错,和报错定位的位置完全匹配。
修复方法
将store函数参数处拼写错误的unit256修改为正确的uint256即可,修复后的完整可正常编译代码如下:
pragma solidity ^0.6.0; contract SimpleStorage1 { uint256 favoriteNumber; function store(uint256 _favoriteNumber) public { favoriteNumber = _favoriteNumber; } }
内容的提问来源于stack exchange,提问作者OT2022
相关产品推荐
相关产品推荐

