编译cJSON.c报警告,怎么改?

发布于 2019-02-10 14:45:04

编译后

*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'E:\Software\Keil_v5\ARM\ARMCC\Bin'
Build target 'rt-thread'
compiling cJSON.c...
packages\EasyFlash-latest\plugins\types\struct2json\src\cJSON.c(55): warning:  #1293-D: assignment in condition
        if (!(copy = (char*)cJSON_malloc(len))) return 0;
packages\EasyFlash-latest\plugins\types\struct2json\src\cJSON.c(279): warning:  #1293-D: assignment in condition
      ptr=str;while ((token=*ptr) && ++len) {if (strchr("\"\\\b\f<br> \t",token)) len++; else if (token<32) len+=5;ptr++;}
packages\EasyFlash-latest\plugins\types\struct2json\src\cJSON.c(353): warning:  #111-D: statement is unreachable
      return p.buffer;
packages\EasyFlash-latest\plugins\types\struct2json\src\cJSON.c(424): warning:  #1293-D: assignment in condition
          if (!(new_item=cJSON_New_Item())) return 0;     /* memory fail */
packages\EasyFlash-latest\plugins\types\struct2json\src\cJSON.c(536): warning:  #1293-D: assignment in condition
          if (!(new_item=cJSON_New_Item()))    return 0; /* memory fail */
packages\EasyFlash-latest\plugins\types\struct2json\src\cJSON.c: 5 warnings, 0 errors

这些错误是while/if判断时 不是布尔型的 导致的 那么需要改吗?怎么改呢?

比如说这个

        cJSON *new_item;
        if (!(new_item=cJSON_New_Item())) return 0;     /* memory fail */

可以这么改吗?-> if ((new_item=cJSON_New_Item())==NULL) return 0;

还是这么改-> if ((new_item=cJSON_New_Item())==cJSON_NULL) return 0; // cJSON_NULL = 2

而且有个函数居然有连着的return

char *cJSON_PrintBuffered(cJSON *item,int prebuffer,int fmt)
{
        printbuffer p;
        p.buffer=(char*)cJSON_malloc(prebuffer);
        p.length=prebuffer;
        p.offset=0;
        <font color="Red">return print_value(item,0,fmt,&p);
        return p.buffer;</font>
}

查看更多

关注者
0
被浏览
2.5k
4 个回答
flyboy
flyboy 2019-02-11
    本帖最后由 flyboy 于 2019-2-11 14:04 编辑


你最好先说一下编译用的 IDE 或着编译器的版本信息。

当然有能力的话最好自己简单的解决一下,然后提个 PR :D
jerryshao
jerryshao 2019-05-13
if ((copy = (char*)cJSON_malloc(len)) == NULL) return 0;
WONG
WONG 2020-12-23

楼主你好 请问你这个问题解决了吗

perseverance51
perseverance51 2021-04-06

这个是版本问题,更新一下版本就好了,目前最新的版本是1.7.14。
最新的cjson GitHub地址

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览