平台: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 秒 ==========
该问题类型为内部编译器错误。
但 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); });
教训:写 C++ 代码的时候,注意不要被 Python 的代码习惯影响。