VS2019调试C++井字棋报predefined C++ types (compiler internal) not found错误
报错本质说明
你遇到的predefined C++ types (compiler internal) not found提示不属于代码运行错误,是Visual Studio调试器的常规提示:
你在std::array<std::array <square_data, 3>, 3> board{};这一行打了断点,或者调试时步进进入了std::array的默认初始化内部逻辑,而VS默认不加载C++标准库内部实现的源码,因此会弹出找不到源码的提示,对你的程序编译、正常运行没有任何影响。
你的代码本身逻辑没有问题,直接运行编译生成的exe可以正常输出井字棋空棋盘。
消除调试提示的操作方案
- 不要在STL容器声明的代码行打断点,将断点移动到
tic_tac_toe构造函数内部第一行即可,调试时不要尝试步进进入STL内置函数的实现 - 如果确实需要调试STL内部逻辑,打开VS 2019的
工具->选项->调试->常规,取消勾选「启用仅我的代码」,同时勾选「启用源服务器支持」,调试时按照提示下载对应标准库源码即可 - (非必要可选操作)将多维
std::array的声明改写成显式初始化,避免调试器触发STL内部源码加载逻辑
代码可优化细节
你的print_code函数的参数建议修改为const square_data& square,避免每次调用都拷贝一次square_data结构体,属于性能优化,不影响原有逻辑的运行。
内容的提问来源于stack exchange,提问作者dev_in_dev
相关产品推荐
相关产品推荐

