致命错误 C1001:内部编译器错误(编译器文件"MSC1.cpp",第 1794 行)

fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1794)

本文关键字:编译器 cpp 1794 MSC1 文件 C1001 内部 错误 致命错误      更新时间:2023-10-16

我试图用Visual Studio 6 SP6编译一个项目,得到了以下结果:

usbcore.h(18) : fatal error C1001: INTERNAL COMPILER ERROR
    (compiler file 'msc1.cpp', line 1794)
     Please choose the Technical Support command on the Visual C++
     Help menu, or open the Technical Support help file for more information

usbcore.h的第18行包含include指令:

18: #include "usbiface.h"

空的或不存在的usbiface.h会产生相同的错误。我评论了这一行,得到了同样的错误,但对于下一个包含文件。

综上所述:对于引用公共项目头的每个#include指令,都会发生编译器错误。

我发现了导致该错误的原因。其中一个include路径(通过/I开关传递给编译器)有一个尾部反斜杠。

编译器命令行为:CPP /nologo /MT /W3 /GX /Zi /Od /I "$(ZLIB_PATH)" /I "..headers"

并且CCD_ 3具有后倾。删除反斜杠解决了问题。

在我的例子中,将标记WholeProgramOptimizationtrue从true更改为false解决了问题。

当我在ctor的定义中去掉括号时,遇到了这个问题。这是一个愚蠢的错误,但检查所有这些棘手的解决方案是非常费力的。所以我只是提供了一种可能性。我没想到会出现内部编译器错误。

在我的例子(VC6.0 SP6a)中,这是由于令人困惑的using语句造成的。编译器似乎无法确定我是在定义Foo::Bar还是Bar(在全局命名空间中)。

namespace Foo {
    class Bar;
}
using Foo::Bar;
class Bar {
};

在我的情况下,我不得不关闭;生成浏览信息"选项来避免这种情况。(项目设置\C/C++\General)