vs2022中编译器报错”C1001内部编译器错误“的一种可能

相信大家一定遇到过这种报错,我今天在实现搜索二叉树时遇到了这个问题。

正常vs2022报错的时候,都会给出具体的原因,但是这种报错并没有给出具体原因。

我排查了一段时间发现。发现vs2022中编译器报错”C1001内部编译器错误“的一种可能_第1张图片自己的一个判断语句少写了一个分号,补上就不会报错了。

但是为什么vs2022无法提供具体的位置呢?

原因是:

类模板中的成员函数,在不调用的时候,并不会实例化!!!

也就是按理来说,就算这个成员函数出现了语法错误,只要不调用,编译器也发现不了。。。

老版本的vs遵循这个原则,比如vs2013。你不调用成员函数,语法错误就检查不出来,因为没有被实例化!!!

但是vs2022做了一些升级,也就是尽管在这个类模板中的成员函数你不去调用它,编译器在检查时也能够发现问题!!但是,这个成员函数没有被实例化,编译器知道有错误,但不知道具体是哪里的错误

所以出现这个报错,大概率是你的模板类中的一些语法错误。

你可能感兴趣的:(c++,bug)