错误 C1001:调试模式下的编译器中发生内部错误

error C1001: An internal error has occurred in the compiler in Debug mode

本文关键字:错误 内部 编译器 C1001 调试 模式      更新时间:2023-10-16

我面临此错误消息:

错误

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

它仅以Debug模式显示。没有关于为什么会发生这种情况的线索。编译器没有给我任何提示。当我单击错误时,它会将我带到名为 xxx.obj 的空白文件。

平台:

  • Visual Studio 2013
  • 英特尔 i7
  • 视窗 8

在深入研究我收到的警告后,我想出了问题所在。有一个特别的问题是:

警告 C4239:使用了非标准扩展:"参数": 从"T"到"T&"的转换

此警告是因为以下行:

auto x = foo(bar{});

函数 foo 声明如下:

int foo(bar&);

这种行为不像这里所说的那样标准化:是否有可能知道参数是否默认。但是,MSVS 支持此行为作为非标准扩展。

通常它运行良好,没有任何问题,但由于该项目中未知的事情,它不起作用。

用这两行更正后:

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

一切都很顺利。