将代码从 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()
的声明或定义放在前面。
我在使用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()
的声明或定义放在前面。