使用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
分配给作为PbufDst
的char*
。要解决此问题,请将
pShortToBuffer_Parse()
的声明或定义放在前面。