Solidity error: Expected identifier, got 'LParen'

Solidity error: Expected identifier, got 'LParen'

我遇到错误:

Expected identifier, got 'LParen'

问题是,这段代码来自 Solidity 文档!我为这个错误尝试了很多东西但无济于事。我得到代码的link是:https://solidity.readthedocs.io/en/latest/solidity-by-example.html

我附上一张有错误的图片:

有人可以向我解释我做错了什么吗?我有正确的版本,如下所示:

kalyan@kalyan:/usr/bin$松露版

Truffle v4.1.13(核心:4.1.13)

Solidity v0.4.24 (solc-js)

这是 运行 Ubuntu 18.04。还有什么我应该做的吗?

编辑

构造函数前的代码是:

/// Modifiers are a convenient way to validate inputs to
/// functions. `onlyBefore` is applied to `bid` below:
/// The new function body is the modifier's body where
/// `_` is replaced by the old function body.
modifier onlyBefore(uint _time) { require(now < _time); _; }
modifier onlyAfter(uint _time) { require(now > _time); _; }

在此处查看类似错误的答案:https://ethereum.stackexchange.com/a/56727/27511 为了方便我重新发布...

我遇到了类似的问题。在我的例子中,它是我安装的 solc 的系统版本。这就是我所拥有的。我通过 Homebrew 安装了 solc,还安装了 truffle。当我 运行 truffle version:

Truffle v4.1.14 (core: 4.1.14)
Solidity v0.4.24 (solc-js)

所以我有最新版本的松露,貌似还有 solc。然而,当我 运行 solc --version

solc, the solidity compiler commandline interface
Version: 0.4.19+commit.e67f0147.Darwin.appleclang

我的系统 solidty 版本不同。我发现我已经通过 Homebrew(在 Mac)安装了 solidity,所以这与 truffle 使用的版本不同。所以在我的情况下,修复是使用自制软件升级 solidity,它从 0.4.19 升级到 0.4.24,我的问题就消失了。 使用 Homebrew 升级 solidity:

brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity
brew linkapps solidity

如果您已经安装了 solidity,那么前两行可能就是您所需要的,但添加其余的是为了完整性。

这是在Mac,如果你在Linux,可能是类似的问题,确保你升级系统安装的solidity,而不是用truffle安装的。

我也遇到过solidity构造函数的这个问题,这很容易解决

如果您 运行 您的代码在 VSCODE 中,那么您可能安装了扩展程序 Solidity 扩展

那么你就有了 UNININSTALL 它并重新加载你的 vscode 编辑器

if you may have uinstalled and not reloaded your vs code than you will face same problem

> also set the pragma solidity version to pragma solidity >=0.4.21 < 0.7.0;

这对我有用