我在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/C++->优化
  • 选择最优化,并将其从“最大化速度”(/O2)更改为“禁用”(/Od)
  • 关于c++ - 添加 watch 显示未定义标识符Visual Studio 2012,cpp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17900797/

    10-13 05:32