没有想通的问题!!请教!!!

[复制链接]
 楼主| win2000_li 发表于 2008-1-11 21:08 | 显示全部楼层 |阅读模式
以下这个函数,我想大家都不会莫生!!<br />memcpy,以前经常没有出现过什么问题。<br />今天在PIC用了,有一些问题!!!不知道是为什么???<br />请大家指点一下!!!<br /><br />以下是我的程序:<br />#define&nbsp;RcvSize&nbsp;4<br />uint8&nbsp;rbuf[RcvSize]&nbsp;=&nbsp;{0};&nbsp;<br />uint8&nbsp;RevCount&nbsp;=&nbsp;0;<br />uint8&nbsp;RcvDataLen&nbsp;=&nbsp;0;<br />//发送变量定义<br />#define&nbsp;TraSize&nbsp;16<br />uint8&nbsp;tbuf[TraSize]=&nbsp;{0};<br /><br /><br />void&nbsp;RevOpe(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIE&nbsp;=&nbsp;false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(tbuf,&nbsp;rbuf,&nbsp;4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(rbuf,&nbsp;0x00,&nbsp;4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RCSTAbits.CREN&nbsp;=&nbsp;true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIE&nbsp;=&nbsp;true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendNumChar(tbuf,&nbsp;4);<br />}<br /><br />但是这样会出现以下警告;<br />F:        est_cardSci.c:131:Warning&nbsp;[2054]&nbsp;suspicious&nbsp;pointer&nbsp;conversion<br /><br /><br /><br /><br />以下是PIC18关于这个函数的说明:<br />memcpy<br />memcpypgm<br />memcpypgm2ram<br />memcpyram2pgm<br />通用软件函数库<br />说明:&nbsp;该函数将buf1&nbsp;中前memsize&nbsp;个字节与buf2&nbsp;中前memsize&nbsp;个字节进<br />行比较,然后返回一个值,表明其中一个缓冲区是小于、等于还是大于<br />功能:&nbsp;将源缓冲区的内容复制到目标缓冲区。<br />头文件:&nbsp;string.h<br />函数原型:&nbsp;void&nbsp;*&nbsp;memcpy(<br />void&nbsp;*&nbsp;dest,<br />const&nbsp;void&nbsp;*&nbsp;src,<br />size_t&nbsp;memsize&nbsp;);<br />rom&nbsp;void&nbsp;*&nbsp;memcpypgm(<br />rom&nbsp;void&nbsp;*&nbsp;dest,<br />const&nbsp;rom&nbsp;void&nbsp;*&nbsp;src,<br />sizerom_t&nbsp;memsize&nbsp;);<br />void&nbsp;*&nbsp;memcpypgm2ram(<br />void&nbsp;*&nbsp;dest,<br />const&nbsp;rom&nbsp;void&nbsp;*&nbsp;src,<br />sizeram_t&nbsp;memsize&nbsp;);<br />rom&nbsp;void&nbsp;*&nbsp;memcpyram2pgm(<br />rom&nbsp;void&nbsp;*&nbsp;dest,<br />const&nbsp;void&nbsp;*&nbsp;src,<br />sizeram_t&nbsp;memsize&nbsp;);<br />参数:&nbsp;dest<br />指向目标数组的指针。<br />src<br />指向源数组的指针。<br />memsize<br />从src&nbsp;数组复制到dest&nbsp;数组的字节数。<br />说明:&nbsp;该函数将src&nbsp;中前memsize&nbsp;个字节复制到数组dest。如果src&nbsp;与<br />dest&nbsp;地址有重叠,则无法执行此操作(未定义)。
 楼主| win2000_li 发表于 2008-1-11 21:32 | 显示全部楼层

自已顶一个啊!!!

通用软件函数库<br />说明:&nbsp;该函数将buf1&nbsp;中前memsize&nbsp;个字节与buf2&nbsp;中前memsize&nbsp;个字节进<br />行比较,然后返回一个值,表明其中一个缓冲区是小于、等于还是大于<br />void&nbsp;*&nbsp;dest,const&nbsp;void&nbsp;*&nbsp;src,size_t&nbsp;memsize&nbsp;);<br />rom&nbsp;void&nbsp;*&nbsp;memcpypgm(rom&nbsp;void&nbsp;*&nbsp;dest,const&nbsp;rom&nbsp;void&nbsp;*&nbsp;src,sizerom_t&nbsp;memsize&nbsp;);<br />void&nbsp;*&nbsp;memcpypgm2ram(void&nbsp;*&nbsp;dest,const&nbsp;rom&nbsp;void&nbsp;*&nbsp;src,sizeram_t&nbsp;memsize&nbsp;);<br />rom&nbsp;void&nbsp;*&nbsp;memcpyram2pgm(rom&nbsp;void&nbsp;*&nbsp;dest,const&nbsp;void&nbsp;*&nbsp;src,sizeram_t&nbsp;memsize&nbsp;);<br />参数:&nbsp;dest<br />指向目标数组的指针。<br />src<br />指向源数组的指针。<br />memsize<br />从src&nbsp;数组复制到dest&nbsp;数组的字节数。<br />说明:&nbsp;该函数将src&nbsp;中前memsize&nbsp;个字节复制到数组dest。如果src&nbsp;与<br />dest&nbsp;地址有重叠,则无法执行此操作(未定义)。
兰天白云 发表于 2008-1-11 21:53 | 显示全部楼层

这样可能会好点

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&tbuf[0],&nbsp;&rbuf[0],&nbsp;4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(&rbuf[0],&nbsp;0x00,&nbsp;4);
 楼主| win2000_li 发表于 2008-1-11 22:09 | 显示全部楼层

谢谢大家回复,我去试一试。

  
 楼主| win2000_li 发表于 2008-1-11 22:13 | 显示全部楼层

谢谢大哥!!!

谢谢“兰天白云”大哥!!兄弟受教了。<br /><br />努力!!!!&nbsp;
shuidi_wangdan 发表于 2013-8-20 15:51 | 显示全部楼层
兰天白云 发表于 2008-1-11 21:53
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&tbuf[0],&nbsp;&rbuf[0],&nbsp;4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...

蓝天大哥,我也遇到这样的一个问题,Warning [2054] suspicious pointer conversion,我的是函数参数定义的是指针,但调用的时候是字符串,如下:void show_Char(const rom far uchar *p,uchar adrPage,uchar adrColumn),调用如下:show_Char(“定义”,0,0),有什么办法可以解决吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部