【问题标题】:fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1794)致命错误 C1001:内部编译器错误(编译器文件“msc1.cpp”,第 1794 行)
【发布时间】:2013-07-03 15:23:22
【问题描述】:

我尝试用 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 指令都会发生编译器错误。

【问题讨论】:

  • 我很感激您可能已经挣扎了很长时间才弄清楚这一点。但是,如果您要出于自己回答的特定目的提出问题,我希望看到更多细节,尤其是在问题中。 -1 直到那时。
  • 也投票决定关闭其本身的优点,因为不清楚。如所问,没有足够的信息来回答这个问题。
  • @John Dibling:你遗漏了哪些细节?我想分享有关编译器错误的信息以节省某人的时间,因为我花了一天时间试图弄清楚。

标签: c++ include visual-studio-6 internal-compiler-error


【解决方案1】:

我知道是什么导致了这个错误。其中一个包含路径(通过 /I 开关传递给编译器)有一个尾随反斜杠。

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

ZLIB_PATH 有一个尾随反斜杠。删除那个反斜杠解决了这个问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 对我来说也是如此,但对于析构函数。不要忘记他们两个的括号......
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        就我而言,我不得不关闭“生成浏览信息”选项以避免这种情况。 (项目设置\C/C++\常规)

        【讨论】:

          猜你喜欢
          • 2019-02-24
          • 1970-01-01
          • 2020-09-16
          • 1970-01-01
          • 2011-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多