我遇到了一个很奇怪的问题,把数组定义到程序空间,在程序中使用指针不能指向程序空间的数组名,下面是具体的问题描述,请达人帮忙指导一下<br /><br />数组是这样定义:<br />static const Uint16 C1A[] ={<br />0x1022,0x06C00,0x080FC,0x004F4,0x004FE,0x004F8,0x000FE,0x00000, <br />0x0000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,<br />0x0000,0x2030,0x0AC63,0x02010,0x0FC84,0x08484,0x0FE82,0x0C282,0x00000, <br />}; <br />在CMD文件中.const段是这么定义,.const后面的定义没有理解,暂没使用:<br /> .const: load = PROG PAGE 0 /*run = SARAM PAGE 1 <br /> { <br /> __const_run = .;<br /> *(.c_mark)<br /> *(.const)<br /> __const_length = . - __const_run;<br /> } /*Global and static const variables that are explicitly */<br /> <br />使用blkMvP2D作为程序空间往数据空间传送数据函数,原形声明如下:<br />extern Uint16 blkMvD2P( Uint16 *data_src, Uint16 size, Uint16 *pgm_dest );<br /><br />指针定义如下:<br /> Uint16 mLcdBuf[256],*pData = mLcdBuf,*pStr; <br />// mLcdBuf为开辟内存空间作为显示缓存,pData指向缓存首址,pStr指向程序空间的数组首址。<br /><br />第一种尝试,使用数组名作为参数传递给函数: <br /> //blkMvP2D(C1A,24,pData+18); //<br />错误如下:<br />[lcd.c] "C:\CCStudio_v3.1\C2400\cgtools\bin\dspcl" -g -q -fr"E:/dspProgram/huituc/Debug" -d"_DEBUG" -v2xx -@"Debug.lkf" "lcd.c"<br />[lcd.c]<br />"lcd.c", line 236: [E146] pointer argument disagrees with prototype<br /> <br />Compile Complete,<br /> 1 Errors, 0 Warnings, 0 Remarks.<br /><br />第二种尝试,重新定义一个指针,先把数组地址传递给指针<br /> pStr = C1A;<br />仅这一句参与编译就出现以下错误<br />[lcd.c] "C:\CCStudio_v3.1\C2400\cgtools\bin\dspcl" -g -q -fr"E:/dspProgram/huituc/Debug" -d"_DEBUG" -v2xx -@"Debug.lkf" "lcd.c"<br />[lcd.c]<br />"lcd.c", line 235: [E124] operands of '=' point to different types<br /> <br />Compile Complete,<br /> 1 Errors, 0 Warnings, 0 Remarks.<br /> |
|