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