【问题标题】:Dev C++: How to fix "Unrecognisable insn, internal compiler error" (full error in description)Dev C++:如何修复“无法识别的 insn,内部编译器错误”(描述中的完整错误)
【发布时间】:2020-12-20 15:17:46
【问题描述】:

出现此错误时,我正在使用 DevC++ 编写一些简单的 C++ 代码:

我不知道为什么在初始化向量数组(图邻接列表)时会得到这个。 因为我不是 c++ 编译器方面的专家,所以我无法解决这个问题。我尝试重新安装程序,但根本没有帮助。

我的编译器是TDM-GCC,在编译器选项中我添加了“-std=c++11”,在调用编译器时执行。 p>

【问题讨论】:

  • 你破坏了编译器。是时候升级了。
  • @Botje 你是什么意思:)?你建议我卸载它并安装一个新的吗?
  • Dev-C++ 环境和提供的编译器已经过时了。还有其他更现代和最新的环境可以免费获得(例如 Code::Blocks),以及更现代的 GCC 发行版(例如 MinGW)。
  • 看来您的编译器不乐意创建一个大小为 100M 且包含 std::vector<int> 对象的数组。
  • 你需要这么大的数组吗?我建议你应该重新考虑算法。

标签: c++ compiler-errors dev-c++


【解决方案1】:

这一行

std::vector<int> adj[NK];

定义了一个包含 1 亿个 std::vector 对象的数组,以及用于创建所有这些对象的静态初始化器。

您的意思是创建一个大小为 100M 的单个向量吗?

std::vector<int> adj(NK);

【讨论】:

  • 实际上,这是一个错误的输入。我想要一个这样的向量数组:vector adj[N];但是,我刚刚找到了解决问题的方法,我很快就会发布它
  • 应该只使用vector&lt;vector&lt;int&gt;&gt;。
【解决方案2】:

尽管我在代码中犯了一个错误,但经过非常简单的修复后它仍然编译成功。编译器曾经是 64 位 Release 版本。我将该字段更改为 32 位版本,问题就消失了,尽管我的程序需要大量的内存。

请注意,您的里程可能会有所不同,并且此解决方案可能会产生一些我不知道的副作用。但是,这对我来说工作得很好,似乎我所有的其他 c++ 文件都编译没有任何错误。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2019-12-08
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多