• 【fatal error C1001: 内部编译器错误】的一个原因


    平台:Windows 11、Visual Studio 2022

    报错信息

    已启动生成...
    1>------ 已启动生成: 项目: StatisticalDistances, 配置: Debug x64 ------
    1>StatisticalDistances.cpp
    1>D:\Documents\StatisticalDistances.cpp(193,1): fatal  error C1001: 内部编译器错误。
    1>(编译器文件“D:\a\_work\1\s\src\vctools\Compiler\CxxFE\sl\p1\c\error.h”,第 1296)
    1> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
    1>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
    1>请选择 Visual C++
    1>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
    1>已完成生成项目“StatisticalDistances.vcxproj”的操作 - 失败。
    ========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ==========
    ========= 生成 开始于 8:52,并花费了 02.358 秒 ==========
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    问题分析

    该问题类型为内部编译器错误。

    但 Visual Studio 并没有检测出代码的语法问题

    导致这个问题的原因比较多,但缺乏足够有用的信息,只能一点点检查。

    问题原因

    经检查代码,发现在写 Lambda 表达式的时候,函数体内没加分号 “;”。加上之后再编译就能通过了。

    // vector keys;
    // for_each(histo.begin(), histo.end(), [&](pair var) {keys.push_back(var.first) });
    // 上面的 Lambda 表达式里没加分号 “;”
    vector<keyT> keys;
    for_each(histo.begin(), histo.end(), [&](pair<keyT, valueT> var) {keys.push_back(var.first); });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    教训:写 C++ 代码的时候,注意不要被 Python 的代码习惯影响。

  • 相关阅读:
    车载测试中:如何处理 bug
    Spring Security——基于前后端分离项目的使用(安全框架)
    Spring-动态代理深入了解
    ElasticSearch之健康状态
    vue3与vue2的区别
    【SpringBoot整合NoSql】-----ElasticSearch的安装与操作篇
    qt qcomboBox实现自动检索功能 通过输入匹配字符进行筛选
    kubectl按pod创建时间排序获取列表
    bat脚本-不关闭窗口
    每日leetcode[回文数】
  • 原文地址:https://blog.csdn.net/qq_29695701/article/details/134003593