添加手表显示未定义的标识符visual studio 2012,cpp

Gil*_*evi 16 c++ watch visual-studio

我遇到了VS 2012中最奇怪的行为(我在用cpp写作).

我在变量上单击"添加监视",并显示"标识符未定义".

这是代码的示例:

for (int j=0;j<32;j++)
        {
            unsigned char curValue=desc1.at<unsigned char>(0,j);
            printf("%s\n",curValue);    
        }
Run Code Online (Sandbox Code Playgroud)

我不得不使用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;
    }
Run Code Online (Sandbox Code Playgroud)

调试器只是跳过b1 [k] = 0的循环;

请注意,即使在循环内部,curValue也是未定义的.

谢谢!

Muh*_*eeb 23

正如约阿希姆所说:curValue是在循环中定义的.如果visual studio中的监视窗口将其视为未定义的值,则应关闭编译器优化.

编译器优化默认为/ O2优化速度.要关闭它:

  • 转到项目,右键单击并选择属性
  • 配置属性 - > C/C++ - >优化
  • 选择优化,并将其从最大化速度(/ O2)更改为禁用(/ Od) 在此输入图像描述

  • 在 vs 2019 中,优化已关闭,但变量仍然未定义。 (6认同)
  • 另请注意,这主要用于调试配置模式,不适用于既无错又优化的版本.谢谢. (2认同)