将代码从 xc32-gcc 移植到标准 gcc 时出现类型分配警告

type assignment warning when porting code from xc32-gcc to standard gcc

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

当我不return PbufDst

的地址时警告消失
pShortToBuffer_Parse( PbufDst, PacketSize);

不确定我在这里遗漏了什么,我在另一个使用 microchip xc32-gcc 编译器的项目中有同样的代码,没有问题也没有警告

伙计们有什么想法吗?

编译器尝试翻译的那一刻

PbufDst = pShortToBuffer_Parse( PbufDst, PacketSize);

它似乎还不知道 pShortToBuffer_Parse()。在这种情况下,C 标准定义假设 int 为 return 值,导致试图将这个非常 int 分配给 PbufDst,这是一个 char*

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