【问题标题】:Unstable remix compiler error "Unknown exception during compilation"不稳定的混音编译器错误“编译期间出现未知异常”
【发布时间】:2019-05-30 18:04:41
【问题描述】:

Remix 在线编译器在相同代码和相似场景之间给出不稳定的错误消息。

Remix 不断抛出“编译期间出现未知异常”。 当函数做多个动态返回时(三个 uint[] 动态数组)。

但是当我将返回的大小调整为两个动态数组时,问题就消失了。 现在我对它背后的原因一无所知。已经切换了不同的 pragma solidity 版本。

//Remix在编译过程中抛出Unknown异常。

function Determine_Result(uint GameId, uint RoundId) internal returns (uint[] memory WinnerUserId, uint[] memory DrawUserId, uint[] memory LoserUserId) {

    uint[] memory Im_WinnerUserIdSet;
    uint[] memory Im_DrawIdSet;
    uint[] memory Im_LoserIdSet;

    /*
    ...        
    */

    return (Im_WinnerUserIdSet, Im_DrawIdSet, Im_LoserIdSet);
}

//但是,这行得通!? :(

function Determine_Result(uint GameId, uint RoundId) internal returns (uint[] memory WinnerUserId, uint[] memory DrawUserId) {

    uint[] memory Im_WinnerUserIdSet;
    uint[] memory Im_DrawIdSet;
    uint[] memory Im_LoserIdSet;

    /*
    ...        
    */       
    return (Im_WinnerUserIdSet, Im_DrawIdSet);
}

这是一个特殊的问题吗?这背后的原理是什么以及如何解决这个问题

拜托,我被这个困了一天

【问题讨论】:

  • 在未经训练的人看来,这看起来像是编译器中的一个错误。
  • 哎呀,下次我会调整照片的大小。感谢您的善意提醒。
  • 我的意思是,即使我对 Remix 一无所知,如果我的编译器开始虚假崩溃,我会怀疑编译器中存在错误。
  • 我明白了,所以如果坚持要这样做,我可能不得不尝试其他编译器。
  • 是的,如果您有可用的替代编译器,即使您最终以不同的方式解决问题,尝试它们也是一个好主意。

标签: compiler-errors ethereum compiler-warnings solidity remix


【解决方案1】:

以以下方式编辑您的函数修复了您收到的错误。

    pragma solidity >=0.4.22 <0.6.0;

contract Test {
    function Determine_Result() public pure returns (uint[] memory WinnerUserId, uint[] memory DrawUserId, uint[] memory LoserUserId) {

        uint[] memory Im_WinnerUserIdSet;
        uint[] memory Im_DrawIdSet;
        uint[] memory Im_LoserIdSet;

        /*
        ...        
        */

        return (Im_WinnerUserIdSet, Im_DrawIdSet, Im_LoserIdSet);
    }

}

您的问题似乎与编译器版本有关。我编写的代码在 0.5.2 版上编译。您编写的代码在 0.4.22 版本上编译,但在 0.5.2 版本上不编译。

据我所知,这是您声明 2 个未在函数内部使用的参数的结果。

它似乎仍然是编译器中的一个错误,尽管它在一种情况下会出错,但在另一种情况下不会出错,至少现在你知道是什么导致了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多