2 qq516056204 qq516056204 于 2013.08.22 11:18 提问

VS2012编译不报错,但是单步调试的时候查看变量值,显示这个变量是未声明的标识符

void CGPRS2012Dlg::OnOncommMscomm1()
{
// TODO: 在此处添加消息处理程序代码
Sleep(300);
VARIANT variant_inp;
COleSafeArray safearray_inp;
CString strtemp;
long len,k;
byte rxdata[1000];
for (int i=0;i<1000;i++)
{
rxdata[i]=0x00;
}
CString phone;
CString str;
CString imei;
CString time;
if (m_comm.get_CommEvent()==2)
{
variant_inp=m_comm.get_Input();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for (k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);
}
}
}
这是一个最简单的串口接收数据,但是len这个变量在调试的时候在监视窗口中显示为未声明的标识符然后我得不到len,而且for (k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);
}
只循环一次,但是能得到正确的rxdata,这是什么情况

3个回答

u011782119
u011782119   2013.08.22 16:14

可能len不是全局变量吧

sgz007
sgz007   2014.05.11 22:31

在VS2008中通过设置 【tools]-->[options]->debug.. -> 将代码精确同步选上问题即可解决
vs2012有这个选项吗?

sgz007
sgz007   2014.05.11 23:26

有两种情况可能引起单步调试时显示的变量值与实现情况有差别,或系统直接提示该变量没有定义:
1) 原始代码与编译代码版本不一致引起的,请使用下列方法解决:
VS2012菜单[tools]->[options]->(Debugging)->General-->勾选(Require source files to exactly....)
2)在设置生成debug版本代码是选择了生成优化代码的选项,所以在跟踪时部分变量被编译器优化掉了。遇到这种情况首先关注工程属性选项:
Property Pages-->C/C++ --> General -->[Optimization] 大概使用Disabled (/Od)就不会出现单步跟踪跳行的情况了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
vs2010 标识可以右键转到定义,但是编译时提示未声明的标识符
问题描述:使用了pugixml库,包含了头文件。编译时显示xml_document  xml_node等为未声明的标识符,但是可以声明F12可以转到定义。 问题原因:未使用 pugi:: 命名空间 解决方法:使用 pugi::xml_document  pugi::xml_node,或在文件前加上using namespace pugi;
单步调试时显示的变量值与实现情况有差别
有两种情况可能引起单步调试时显示的变量值与实现情况有差别,或系统直接提示该变量没有定义: 1) 原始代码与编译代码版本不一致引起的,请使用下列方法解决: VS2012菜单[tools]->[options]->(Debugging)->General-->勾选(Require source files to exactly....) 2)在设置生成debug版本代码是选择了生成优化代码的选项
qt 如果出现未声明的变量,前提是已经声明过的
找到你的.cpp  .h 文件 用记事本打开 然后另存为的时候最下面的编码改成unicode的。最好cpp文件也改成unicode的
vs2012下编译别人的项目时,明明有头文件且xxx.cpp中包含的头文件,却还提示xxx是未标识符,error C2065
一大早起来,从网上下载了一个cocos2d-x游戏--三消类游戏Sushi Crush源码,看到网上运行效果的截图,觉得这源码很有学习的必要。 于是,我就用vs2012打开win32下的sln,编译却提示“c:\users\end\desktop\sushicrush-master\classes\play-layer.cpp(22): error  C2065: “m_srcSushi”: 未
vs里不显示局部变量了
首先,你要确保VS处于调试状态(因为编辑状态和调试状态的菜单以及工具栏会不同)。 然后选择菜单【调试】-【窗口】里面的【局部变量】、【自动窗口】和【监视】-【监视 n】都可以显示变量的值,只是显示的变量会不同
VS 2010调试程序,怎么查看其中变量的值
要看其中的值,不能结束运行,一定是正在运行中,可以在运行之前中间加入断点,,然后运行,在断点处运行停止。   函数或变量地方,右键你想查看的变量,点添加监视 or快速监视都行,我一般快速监视,也可以快捷键。 比如这句代码 printf("the corners location:%f\t%f\n",corners[i].x,corners[i
vs提示大量未声明标识符,语法错误缺少:“;”
后发现此warning 遂将#include "stdafx.h"放在所有头文件前,编译通过 不明所以,查资料  stdafx.h VC创建项目时自动创建的预编译头文件,在编译其他文件之前,VC先预编译此文件。头文件stdafx.h引入了项目中需要的一些通用的头文件,比如window.h等,在自己的头文件中包括stdafx.h就包含了那些通用的头文件。    所谓头
已经声明过变量,依然报 C2065:未声明的标识符错误 解决办法
vs,c++编译代码的时候,遇到很奇怪的问题,明明在前面,已经声明过变量,编译的时候仍然报 未声明的标识符错误,定位错误地方,在赋值之前,明明定义过变量了啊,非常疑惑,下面贴上代码,火眼金睛的你能不能找到原因:      if (fr = mat.cols() || fr + 1 >= mat.rows()) //return Color::NO; Color ret = Color
VS2013写MFC程序遇到的错误
在使用Visual Studio 2012编译程序的时候报以下错误 vc\atlmfc\include\atlcore.h(638): error C2039: “SetDefaultDllDirectories”: 不是“`global namespace’”的成员 vc\atlmfc\include\atlcore.h(638): error C2065: “SetDefaultD
vs2010调试qt代码 qsting变量值不显示
搜索autoexp.qte文件,用记事本打开,能看到里面有qt4的字样,全选复制,替换掉autoexp.dat中的内容。重启vs,调试就正常了。