【发布时间】:2013-07-27 20:54:33
【问题描述】:
我在 VS 2012 中遇到了最奇怪的行为(我正在用 cpp 编写)。
我在一个变量上单击“添加监视”,它显示“标识符未定义”。
下面是代码示例:
for (int j=0;j<32;j++)
{
unsigned char curValue=desc1.at<unsigned char>(0,j);
printf("%s\n",curValue);
}
我不得不使用 printf 来显示 curValue 的值。哈哈。
有没有人遇到过这样的行为?
编辑:更奇怪的是这种情况发生。调试以下代码时:
int b1[8];
for (int k=0;k<7;k++)
b1[k]=0;
char q=curValue;
int t=0;
while (q!=0){
b1[t++]=q%2;
q=q/2;
}
调试器只是跳过 b1[k]=0; 的循环
请注意,即使在循环内部,curValue 也是未定义的。
谢谢!
【问题讨论】:
-
该问题的另一个解决方案是启用编译器的优化,但启用 /Zo(增强优化调试)告诉编译器生成与优化代码一起使用的附加调试信息。这仅适用于 Visual Studio 2013 更新 3 或更高版本。见msdn.microsoft.com/en-us/library/dn785163.aspx
-
这个问题在 VS 的许多版本中已经存在了好几年。微软半途而废的 C++ 实现的另一个例子。 (你永远不会在 C# 中看到这样的废话。)
标签: c++ visual-studio watch