我在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也是未定义的。
谢谢!
最佳答案
正如Joachim所说:curValue在循环内部定义。如果Visual Studio中的监视窗口将其视为未定义的值,则应关闭编译器优化。
编译器优化默认为/O2优化速度。要将其关闭:
关于c++ - 添加 watch 显示未定义标识符Visual Studio 2012,cpp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17900797/