我在keil中定义了一些变量有个就不执行,这是为什么啊 5

我想单步调试,但是在监视框中有些变量就是没有值... 我想单步调试,但是在监视框中有些变量就是没有值 展开
 我来答
百度网友b12a2e039
2012-12-20 · TA获得超过1533个赞
知道小有建树答主
回答量:819
采纳率:0%
帮助的人:689万
展开全部
局部变量是定义在堆栈里,也就是说这些变量会和其他函数公用同一块内存。如果程序运行到函数体以外,那么这些变量的值是不确定的。
keil的变量仿真其实本质是观察变量地址的值,所以如果你在变量的生存空间以外看,这个变量的值是错的。所以仿真器干脆给你个??????
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9b702d8
2012-12-08 · 知道合伙人IT服务行家
百度网友9b702d8
知道合伙人IT服务行家
采纳数:254 获赞数:1568
计算机技术与软件资格嵌入式系统设计师

向TA提问 私信TA
展开全部
你声明的是局部变量,只有执行到main里面分配了存储空间,watch才能显示正确的值。
更多追问追答
追问
那为什么有的有,有的没呢
追答
你觉得哪个是有的,并且是正确的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ddouding
2012-12-07
知道答主
回答量:12
采纳率:0%
帮助的人:1.9万
展开全部
现在没有看到你的程序,我猜测应该是你程序有点问题,不妨如下执行以下static int a=0x0f;void main(){ while(1){P0=a;}}或者改成static int a=0x0f;void main(){P0=a; while(1);}
追问
我贴图但是知道就是不显示。。。
我的主函数是这样的
int main(void)
{

u16 yy=4;
u16 cube=0;
u16 xx=0;
bool cc=0;
u16 temp=0;
int para=0;
。。。。。。。
}
单步的时候有的句子前有灰色的有的没有,在watch中有的变量的值一直显示是????,有的显示正常。显示正常的是yy,xx,para,另几个不正常。我应该怎么改。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2012-12-07 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
编译器不是傻子。你从未用过的变量是不会被分配空间的。
追问
后面用过的,而且结果也是我想要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式