使用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);


不知道我在这里缺少什么,我在使用Microchip XC32-GCC编译器的另一个项目中也有同样的代码,没有问题也没有警告

有想法吗?

最佳答案

编译器尝试翻译的那一刻

PbufDst = pShortToBuffer_Parse( PbufDst, PacketSize);


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

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

08-27 01:56