【问题标题】:error C1001: An internal error has occurred in the compiler in Debug mode错误 C1001:在调试模式下编译器发生内部错误
【发布时间】:2016-02-29 19:09:55
【问题描述】:

我正面临以下错误消息:

错误 C1001:编译器发生内部错误

它只出现在Debug 模式下。不知道为什么会这样。编译器没有给我任何提示。当我点击错误时,它会将我带到名为 xxx.obj 的空白文件。

平台:

  • Visual Studio 2013
  • 英特尔 i7
  • Windows 8

【问题讨论】:

标签: c++ visual-studio-2013


【解决方案1】:

在深入了解收到的警告后,我发现了问题所在。有一个怀疑是:

警告 C4239:使用了非标准扩展:“参数”: 从“T”转换为“T&”

这个警告是因为这行:

auto x = foo(bar{});

函数 foo 声明如下:

int foo(bar&);

这种行为不像这里所讨论的那样被标准化:Is it possible to know if the parameter was defaulted。但是,MSVS 作为非标准扩展支持这种行为。

通常它运行良好,没有任何问题,但由于该项目中的未知事物,它无法运行。

用这两行改正后:

bar temp{};
auto x = foo(temp);

一切正常。

【讨论】:

  • 您已将其静音,但未发现触发编译器内部问题的实际示例。
  • 是的,这是正确的。但是,我只是想通知一下,使用此扩展程序可能会导致不良行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2021-04-06
相关资源
最近更新 更多