oldbaby 发表于 2007-1-22 12:01

ICC AVR 中const问题

小弟使用ICC&nbsp;AVR编译器,最近做一个项目时遇到了const的问题,不是很明白,希望能得到大虾的指导~<br />函数功能是由键盘得到一个整型数,在函数里主要部分是这样的:<br />unsigned&nbsp;char&nbsp;str;//存储按键值的数组<br />//----<br />//得到按键值,依次赋给str&nbsp;0~4&nbsp;最后一位赋值'\0'<br />//----<br />value=atoi(str);//调用系统atoi函数,得到整型值。这个函数是没有问题的,能正确把字符串转换为整型<br />Uart0_SendStr(str);//同样的str传给串口发送就不行了,会发送一堆的数据,似乎是从flash中读的数据。<br />字符串发送函数是自己写的,具体如下:<br />//-------------------------------<br />//send&nbsp;char&nbsp;with&nbsp;uart&nbsp;0<br />void&nbsp;Uart0_SendChar(unsigned&nbsp;char&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(UCSR0A&(1&lt&ltUDRE0)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UDR0=x;&nbsp;<br />}<br />//send&nbsp;string&nbsp;with&nbsp;uart&nbsp;0<br />void&nbsp;Uart0_SendStr(const&nbsp;unsigned&nbsp;char&nbsp;*addr)<br />{<br />&nbsp;while(*addr!='\0')<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart0_SendChar(*addr++);<br />&nbsp;}<br />}<br />Uart0_SendStr函数的参数为:(const&nbsp;unsigned&nbsp;char&nbsp;*addr)<br />系统中atoi的参数定义为:(CONST&nbsp;char&nbsp;*)&nbsp;我现在最不明白的就是这两个的区别是什么?请大虾指点迷津,不胜感激~~

一级菜鸟 发表于 2007-1-22 12:04

定义为const,则数值不可变,MCU寻址代码区

oldbaby 发表于 2007-1-22 12:50

re:

对,这个我明白,可value=atoi(str);就能转化啊,为什么atoi没有去寻址代码区?
页: [1]
查看完整版本: ICC AVR 中const问题