Frank_bb44 2024-06-01 18:01 采纳率: 50%
浏览 14

Visual Studio上出现内部编译器错误(ICE)

我在Visual Studio上使用C++运行以下代码:

headfile.h:

#ifndef HEADFILE_H
#define HEADFILE_H
#pragma once

template<typename ob>
class Queue
{
private:
    enum MyEnum
    {
        MAX = 10
    };
    struct object
    {
        ob thisob;
        object* next;
    };
    object* front;
    object* rear;
    int many;
    const int Max;

public:
    Queue(int max = MAX) : Max(max) {
        front = rear = nullptr;
    }
    ~Queue() {

    }
    bool inqueue(ob& in) {
        if (many >= Max) {
            return false;
        }
        many++;
        object* add = new object{in, nullptr}
            if (front == nullptr) {
                front = add;
                return true;
            }
        rear->next = add;
        rear = add;
        return true;
    }
    bool outqueue(ob & out) {
        if (empty()) {
            return false;
        }
        object* temp = front;
        
        front = front->next;
        delete temp;
        many--;
        if (front == nullptr) {
            rear = nullptr;
        }
        return true;
    }
    bool full() {
        return many == Max;
    }
    bool empty() {
        return many == 0;
    }
    int howmany() {
        return many;
    }
};


#endif // !HEADFILE_H

use.cpp:

 #include <iostream>
#include "headfile.h"



int main() {
    Queue<int> queue;
    int d;
    int output;
    std::cout << "enter 5 int";
    for (int i; i < 5; i++) {
        std::cin >> d;
        queue.inqueue(d);
    }
    for (int i; i < 5; i++) {
        std::cout << queue.outqueue(output);
    }


}



出现如下错误:
严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息
错误 C1001 内部编译器错误。
(编译器文件“D:\a_work\1\s\src\vctools\Compiler\CxxFE\sl\p1\c\error.h”,第 1291 行)
要解决此问题,请尝试简化或更改上面所列位置附近的程序。
如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com/
请选择 Visual C++
“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。 myC++ D:\myC++\myC++\headfile.h 67

  • 写回答

7条回答 默认 最新

  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    问题: 在Visual Studio中使用C++编程时,遇到内部编译器错误(ICE),具体代码中涉及到headfile.huse.cpp两个文件,错误信息提示简化或更改代码。

    解决方案

    1. 检查头文件包含

      • 确保在use.cpp中正确包含了headfile.h,包括路径和文件名。
      #include "headfile.h"
      

      或者如果头文件在项目的同一目录下,直接写:

      #include "headfile.h"
      
    2. 检查模板和类型定义

      • headfile.h中,Queue类的模板参数ob没有明确指定,确保在use.cpp中传递了正确的类型,例如:
      Queue<int> queue;
      
    3. 检查object结构体

      • 确保object结构体的thisob成员变量是ob类型的实例,例如:
      object{ob in, nullptr}
      
    4. 检查内存管理

      • inqueue方法中,add对象的内存分配和释放可能存在问题。修复为:
      object* add = new object{in, nullptr};
      if (front == nullptr) {
          front = rear = add;
      } else {
          rear->next = add;
          rear = add;
      }
      
    5. 错误处理

      • outqueue方法中,确保output变量已经初始化,并在循环外部声明:
      int output;
      ...
      for (int i; i < 5; i++) {
          std::cout << queue.outqueue(output);
      }
      
    6. 编译器设置

      • 如果以上都无误,可能是编译器设置问题。尝试更新Visual Studio到最新版本,或者清理并重新构建项目。

    注意

    • 如果问题仍然存在,建议将简化后的代码片段复制到一个全新的项目中,以排除其他潜在的环境问题。同时,将错误日志中的详细信息提供给Visual Studio的技术支持社区,以便得到更专业的帮助。
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月1日

悬赏问题

  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop