
在IAR中经常停在一个函数内部
可它的局部变量和形参不论是拉到Watch中还是直接点出Locals
状态都是unavailable
但有时候又能够看到值我就很郁闷了
今天反复试验了一下发现当使用None优化等级时就可以看到各个局部变量的值而采用Medium优化则不能看~既前面说的unavailable
我开始想是不是局部变量被优化了但一查反汇编发现两者没什么区别
一个简单的传递2个参数的函数调用同样是把实参复制给了R1,R0(符合ATPCS)
可为啥Medium就是看不到呢因为我写代码一般用Medium相比None能节约40%的Flash空间
静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值(也就是说,如果item是static的,那么只有在第一次进入这个函数的时候会执行item=0,以后都不会执行。)。
把你的void getarea()方法修改为:
double getarea(){double area = MathPIrr;return area; }
同样把void zhouchang()修改为:
double getzhouchang(){double circlelong=MathPI2r;return circlelong;}
这样你就可以通过这两个方法,返回计算后的面积和周长。
在show()方法中:
void show(){
double area = getarea();
double zhouchang = getzhouchang();
Systemoutprintln("圆的面积为:"+area );
Systemoutprintln("圆的周长为:"+zhouchang);
}
我补充一下函数的定义:
修饰符 返回值 方法名(参数){}
修饰符包括公有、私有、保护,像你定义的时候没有写则默认为包内(出了这个package就不能调用了)。
返回值void表示不返回任何东西,为某种类型则最后必须要返回一个该类型的东西或者有的时候可以返回关键字null,表示返回一个null对象。
方法名随便起,建议学习一下驼峰命名法,你这个zhouchang()过于随便了。
参数就是函数可以接收来自外部程序的实参,将实参赋予给函数的形参,然后对形参进行加工处理。
以上就是关于各位高手怎么查看局部变量的值吗全部的内容,包括:各位高手怎么查看局部变量的值吗、关于arm中堆栈中暂存局部变量是如何存取的问题、Java中如何调用局部变量比如我这个代码中如何在show方法中显示出圆的面积与周长谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)