2017-04-08 33 views
0

代码时使用gcc编译器,当我分配警告类型分配警告移植从xc32-GCC标准GCC

的功能很简单

char* pShortToBuffer_Parse(char* DisBuff, short value) 
{ 
    *DisBuff++ = (char) (value >> 8); 
    *DisBuff++ = (char) value; 
    return DisBuff; 
} 

,我caling它像下面

short PacketSize = 0;char* PbufDst;  
PbufDst = pShortToBuffer_Parse(PbufDst, PacketSize); 

警告会消失,当我不回PbufDst的ADRESS

pShortToBuffer_Parse(PbufDst, PacketSize); 

不知道我很想念这里,我有在使用微芯片xc32-gcc编译器

任何想法家伙另一谟没有问题,也没有警告这个工作同一段代码?

+2

这听起来像一个'pShortToBuffer_Parse'的声明不在你调用它的地方(可能试着'gcc -Wimplicit'来确认?)。很难说清楚,因为你的问题不包括[mcve]。 – melpomene

回答

0

编译器尝试翻译的那一刻

PbufDst = pShortToBuffer_Parse(PbufDst, PacketSize); 

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

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

+0

非常真实。谢谢 –