智能车制作

标题: 记录一个比较怪的BUG [打印本页]

作者: I'M_Not_The    时间: 2014-5-31 15:07
标题: 记录一个比较怪的BUG
程序这么写的:
//=================================//
int  a = 0;//全局变量
int  b = 0; //全局变量

void 函数(void)
{
    b = 0;//清零
    a = 。。。。。。。。;
    b=。。。。。调用了a;
}


void mian()
{
     函数();
     LCD();//显示a,b的值
}
//=================================//


现象:
单步调试时,a,b的值正确,显示也正确。
把车放赛道,看LCD显示a,b,的值,刚开始都正确,只要我手在摄像头前划过后,b的值就不再正确,a的值正确。

解决方法:
鼓捣两个小时后,在函数();里面对a进行清零后,bug就这样解决了。

求大神指导




作者: 土豆的故事    时间: 2014-5-31 21:06
完全没懂。
作者: nch1766    时间: 2014-5-31 21:23
是不是因为你用的是全局变量,上一次的a值影响到下一次的a值了,全局变量记得是整个程序中都可以被改变......
作者: I'M_Not_The    时间: 2014-5-31 22:02
nch1766 发表于 2014-5-31 21:23
是不是因为你用的是全局变量,上一次的a值影响到下一次的a值了,全局变量记得是整个程序中都可以被改变.... ...

我的理解和你一样,但是程序不按我们理解那样运行,现在很多全局变量在函数调用前我都清零的,怕出问题。

作者: nch1766    时间: 2014-5-31 22:17
I'M_Not_The 发表于 2014-5-31 22:02
我的理解和你一样,但是程序不按我们理解那样运行,现在很多全局变量在函数调用前我都清零的,怕出问题。 ...

感觉全局变量使用还是有风险的,不必要的的情况下还是少用为妙,函数之间用形参也不是不可以。
作者: [Dan]    时间: 2014-6-1 17:09
这些都是神马玩意




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2