visual studio 2012不会将wchar_t显示为文本

时间:2013-11-05 08:29:04

标签: c visual-studio visual-studio-2012 visual-studio-debugging

我刚从visual studio 2010切换到visual studio 2012,我遇到了visual studio 2012调试器的问题 - 似乎在调试c代码时,wchar_t不再显示为文本。

只是简单地考虑以下小而简单的程序:

#include <wchar.h>
int main()
{
  wchar_t *ppp = L"abcdef";
  char    *zzz = "abcedf";

  return 0;

}

在vs2012中,调试此程序时,ppp watch显示“a”{97}并且没有放大镜可以让我选择可视化。
这在vs2010上运行良好,手表显示整个文本并显示放大镜。

当将鼠标悬停在变量上并且在immidiate window.chars中显示其值时,也会发生这种情况。/ Zc:wchar_t标志设置正确,实际上我在vs 2012中编译了程序并且只是调试了它vs2012和vs2010得到了相同的结果,所以它看起来不像编译问题。

有人遇到过这样的问题吗?是否有任何修复或变通方法(除了通过询问ppp,su的值来强迫它?)

2 个答案:

答案 0 :(得分:6)

  1. main()
  2. 中的代码中添加断点
  3. 启动程序并等待命中调试断点
  4. 用鼠标右键单击ppp
  5. 在弹出窗口中选择添加观看
  6. 打开 Watch控制台
  7. 查找ppp
  8. 右键点击ppp
  9. 在弹出窗口中选择编辑值
  10. 改变&#34; ppp&#34;到&#34; ppp,su&#34;通过附加&#34;,su&#34;
  11. 您现在应该将ppp的内容视为Unicode文本。

    更改默认输出的调试操作符为:

    • su:Unicode文本(UTF-16)
    • s8:UTF-8
    • o:Octals
    • d:小数
    • x:Hexadecimals
    • wc:Windows类
    • wm:Windows消息
    • hr:HRESULT
    • ! :关闭STL可视化
    • c:ASCII字符

    ,可能更多。

答案 1 :(得分:1)

在.c文件中添加,su对我无效。使用(wchar_t*)进行前缀!