• 【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 的代码习惯影响。

  • 相关阅读:
    前端三刺客----HTML
    Unity程序在VR一体机(Android)上卡死(闪退)后怎么办?——用adb查看android上某Unity app的debug信息
    数据结构和算法(3):列表
    快速学会文件操作模块
    640. 求解方程(JavaScript)
    tomcat 部署及优化
    web - 前段三剑客
    Go语言学习笔记—gorm(二)
    无胁科技-TVD每日漏洞情报-2022-9-9
    用Roslyn玩转代码之一: 解析与执行字符串表达式
  • 原文地址:https://blog.csdn.net/qq_29695701/article/details/134003593