cjson

Make a makefile for cjson code with -lcjson for json parser in c

落花浮王杯 提交于 2019-12-02 06:54:17
问题 I'm very new to the makefiles. I'm compiling the c code file which contains cJson library from terminal using command gcc -test1.c -o test -lcjson with -lcjson at last and its running perfectly. But how to compile the same code using makefile as I have to add -lcjson at last. if I'm using without -lcjson I'm getting error /tmp/cc4ESrx1.o: In function `parse_json': test1.c:(.text+0x2d): undefined reference to `cJSON_Parse' test1.c:(.text+0x42): undefined reference to `cJSON_GetObjectItem'

cJSON memory leak

五迷三道 提交于 2019-12-01 10:51:10
I use cJSON in my program to convert my values to JSON and write it to file. Here is the example of my code: void writeStructToFile(IOPipe this, struct structtype somevalues) { cJSON *jout = cJSON_CreateObject(); cJSON_AddItemToObject(jout, "V1", cJSON_CreateNumber(somevalues.v1)); cJSON_AddItemToObject(jout, "V2", cJSON_CreateNumber(somevalues.v2)); fprintf(this->outstream, "%s", cJSON_Print(jout)); cJSON_Delete(jout); } Works great, but after some time I found that Linux(embedded) kills my program because of abnormal memory use or device(on Cortex A8) just hangs. After debug I found, that

makefile 模板二

爱⌒轻易说出口 提交于 2019-11-30 15:05:00
这个模板跟上一个比起来区别就是要一个.c一个地添加,.c文件太多的时候,就比较费劲 工程链接: https://github.com/jorinzou/MqttServer-and-MqttClient.git CC=gcc OBJ=MqttServer all:$(OBJ) HERE=./ incs=-I$(HERE) files:=$(HERE)/main.c files+=$(HERE)/SocketServer.c files+=$(HERE)/cJSON.c files+=$(HERE)/mqtt.c OBJS_C := $(patsubst %.c,%.o,$(files)) CFLAGS=-O0 -g CFLAGS+=$(incs) LDFLAGS=-lpthread LDFLAGS+=-lm LDFLAGS+=-ldl $(OBJ):$(OBJS_C) $(CC) $(LDFLAGS) -o $@ $^ $(OBJS_C):%.o:%.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -rf $(HERE)*.o rm -rf $(HERE)/$(OBJ) 来源: https://my.oschina.net/u/4149215/blog/3112083

cJSON详细剖析(六)----print_string_ptr()函数(补充)

百般思念 提交于 2019-11-30 04:24:34
我又重新把之前的写的博客看了一遍,写的是什么狗屁,我自己看得都费劲,这里我重开一博客把之前在剖析(四)里的内容摘取出来。 在分析print_object()函数时,对于出现的print_String_ptr()函数,我们做进一步的分析。下面就是print_String_ptr()函数,我已经贴好了注释,针对给定的text文件,就返回"\"name\""了。 当然,上述针对的给定的text字符串,刚好满足if(iflag)条件,所以就直接输出了,接下来我们分析一下未满足条件的,也就是flag为1的时候。这就是,在上图的黄色框中的部分的条件成立的,即可以字符串的第一个字符是双引号或反斜杠或者ASCII码小于32的,我们先看看小于32的ASCII码包括哪些内容,如下图: 有点长,我就不全贴出来了(给个地址: http://ascii.911cha.com/?year=13 ),可以看到,都是一些控制字符串,非显示字符串,控制字符是用来实现特定操作的,如一些比较常用的控制字符就是ESC、BACKSPACE(删除上一个字符)、Del(删除当前字符)、回车符、换行符等。 好了,我们回到代码部分,首先判断是不是空串,如果是就直接输出俩双引号。 接下来,我们来分析最后的while()部分。这部分其实也很好理解,就是是显示字符就直接保存,不是的话需要判断以及加一些反斜杠等

Lua json

断了今生、忘了曾经 提交于 2019-11-29 04:58:34
Lua json使用 版本 Lua 5.3 编码与解码 -- cjson.encode 是用于编码,将 lua 值转换为 json 字符串; -- cjson.decode 是用于解码,将 json 字符串转换为 lua 值; local cjson = require("json") -- 编码 elite_print("encode test") -- 布尔类型 local lua_bool = true sleep(2) elite_print(cjson.encode(lua_bool)) -- 数组类型 local lua_array = {1, 2, 3, 4, 5, 6} sleep(2) elite_print(cjson.encode(lua_array)) -- 数值类型 local lua_number = 6.66 sleep(2) elite_print(cjson.encode(lua_number)) -- 字符串类型 local lua_string = "I am test 1280" sleep(2) elite_print(cjson.encode(lua_string)) -- 对象类型 local lua_object = { ["name"] = "Jiang", ["age"] = 24, ["addr"] = "BeiJing", [