我正在使用visual studio 2022进行日常开发,我有绑定到旧库或平台的二进制文件,所以我将platform toolset属性设置为旧版本。但悬停时它不显示变量值。
如果将平台工具集修改为 Visual studio 2022(v143),则此功能有效。
有人能帮我解决这个调试问题吗?先谢谢了。
bvn4nwqk1#
我在VS2022 17.4中使用编译器VS2010进行了测试,并重现了该问题。但我发现std::string是c++中的类类型。在Local窗口中使用旧编译器工具集VS2010进行调试时,它确实返回类类型数据结构。展开str,您将在char* 类型数据结构中看到_Buf中的值test。您可以在监 windows 口中添加str. c_str(),您将看到它以char* 类型显示值。c_str返回一个常量char*,它指向一个以null结尾的字符串(即C样式字符串)
std::string
str
_Buf
test
str. c_str()
我猜两个编译器在调试模式下显示字符串类型变量值的差异是由编译器决定的。如果你想让VS2010编译器在悬停时显示变量值,这里有一个解决方案。
const char* str = "test"; char str[] = "test";
1条答案
按热度按时间bvn4nwqk1#
我在VS2022 17.4中使用编译器VS2010进行了测试,并重现了该问题。但我发现
std::string
是c++中的类类型。在Local窗口中使用旧编译器工具集VS2010进行调试时,它确实返回类类型数据结构。展开str
,您将在char* 类型数据结构中看到_Buf
中的值test
。您可以在监 windows 口中添加str. c_str()
,您将看到它以char* 类型显示值。c_str返回一个常量char*,它指向一个以null结尾的字符串(即C样式字符串)我猜两个编译器在调试模式下显示字符串类型变量值的差异是由编译器决定的。如果你想让VS2010编译器在悬停时显示变量值,这里有一个解决方案。