将代码从xc32-gcc移植到标准gcc

时间:2017-04-08 11:00:44

标签: c gcc compiler-warnings

使用gcc编译器时,我是一个赋值警告

warning: assignment makes pointer from integer without a cast [enabled by default]

功能很简单

char* pShortToBuffer_Parse( char* DisBuff, short value )
{   
    *DisBuff++ = (char) (value >> 8);
    *DisBuff++ = (char) value;  
   return DisBuff;
}

我正在像下面那样打电话

short PacketSize = 0;char* PbufDst;    
PbufDst = pShortToBuffer_Parse( PbufDst, PacketSize);

当我不返回PbufDst的地址时,警告消失了

pShortToBuffer_Parse( PbufDst, PacketSize);

不确定我在这里缺少什么,我在同一条代码中使用微芯片xc32-gcc编译器时没有任何问题也没有警告;

任何想法的人?

1 个答案:

答案 0 :(得分:0)

编译器尝试翻译的时刻

PbufDst = pShortToBuffer_Parse( PbufDst, PacketSize);

它似乎还不了解pShortToBuffer_Parse()。在这种情况下,C标准定义假定int为返回值,导致尝试将此int分配给PbufDst char*

要解决此问题,请将pShortToBuffer_Parse()的声明或定义放在前面。