将代码从xc32 gcc移植到标准gcc时出现类型分配警告
在使用gcc编译器时,我是一个赋值警告将代码从xc32 gcc移植到标准gcc时出现类型分配警告,c,gcc,compiler-warnings,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;
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编译器的projet中使用了同样的代码,没有问题也没有警告
伙计们,有什么想法吗?编译器试图翻译的那一刻
PbufDst = pShortToBuffer_Parse( PbufDst, PacketSize);
它似乎还不知道pShortToBuffer\u Parse()
。在这种情况下,C标准定义假定int
为返回值,导致尝试将此int
分配给PbufDst
,这是一个char*
若要解决此问题,请将
pShortToBuffer\u Parse()
的声明或定义放在前面。听起来像pShortToBuffer\u Parse
的声明在您调用它的位置不在范围内(可能尝试gcc-Wimplicit
进行确认?)。很难说清楚,因为你的问题没有包含答案。非常正确。非常感谢。