IT评测·应用市场-qidao123.com技术社区
标题:
在Ubuntu中编译含有JSON的文件出现报错
[打印本页]
作者:
温锦文欧普厨电及净水器总代理
时间:
2024-9-15 10:35
标题:
在Ubuntu中编译含有JSON的文件出现报错
在ubuntu中进行JSON相关学习的时间,我发现了一些小问题,决定与各人进行分享,减少踩坑时间出现不必要的时间耗费
截取部分含有JSON部分的代码进行展示
char *str = "
{
"title":"JSON Example",
"author": {
"name":"John Doe",
"age": 35,
"isVerified":true
},
"tags":["json", "syntax", "example"],
"rating": 4.5,
"isPublished":false,
"comments": null
}";
复制代码
按照JSON格式,在引号前边都需要加上 \ 反斜杠
别的部分的代码与本次的错误分享无关,暂不截图
打开终端执行 gcc -o json_test json_test.c 下令对本测试代码进行编译
以下为在编译过程中出现的报错,
可以发现报错的部分非常的多,而且都明显的指向 \ 反斜杠这一 方面的错误
以下为全部的报错
json_test.c: In function ‘main’:
json_test.c:6:14: error: stray ‘\’ in program
char *str = "
^
json_test.c:6:15: warning: missing terminating " character
char *str = "
^
json_test.c:6:15: error: missing terminating " character
json_test.c:8:5: error: stray ‘\’ in program
"title":"JSON Example",
^
json_test.c:8:6: warning: missing terminating " character
"title":"JSON Example",
^
json_test.c:8:6: error: missing terminating " character
"title":"JSON Example",
^~~~~~~~~~~~~~~~~~~~~~~~~~
json_test.c:9:5: error: stray ‘\’ in program
"author": {
^
json_test.c:9:6: warning: missing terminating " character
"author": {
^
json_test.c:9:6: error: missing terminating " character
"author": {
^~~~~~~~~~~~
json_test.c:10:5: error: stray ‘\’ in program
"name":"John Doe",
^
json_test.c:10:6: warning: missing terminating " character
"name":"John Doe",
^
json_test.c:10:6: error: missing terminating " character
"name":"John Doe",
^~~~~~~~~~~~~~~~~~~~~
json_test.c:11:5: error: stray ‘\’ in program
"age": 35,
^
json_test.c:11:6: warning: missing terminating " character
"age": 35,
^
json_test.c:11:6: error: missing terminating " character
"age": 35,
^~~~~~~~~~~
json_test.c:12:5: error: stray ‘\’ in program
"isVerified":true
^
json_test.c:12:6: warning: missing terminating " character
"isVerified":true
^
json_test.c:12:6: error: missing terminating " character
"isVerified":true
^~~~~~~~~~~~~~~~~~
json_test.c:7:5: error: empty scalar initializer
{
^
json_test.c:7:5: note: (near initialization for ‘str’)
json_test.c:14:5: error: stray ‘\’ in program
"tags":["json", "syntax", "example"],
^
json_test.c:14:6: warning: missing terminating " character
"tags":["json", "syntax", "example"],
^
json_test.c:14:6: error: missing terminating " character
"tags":["json", "syntax", "example"],
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
json_test.c:15:5: error: stray ‘\’ in program
"rating": 4.5,
^
json_test.c:15:6: warning: missing terminating " character
"rating": 4.5,
^
json_test.c:15:6: error: missing terminating " character
"rating": 4.5,
^~~~~~~~~~~~~~~
json_test.c:16:5: error: stray ‘\’ in program
"isPublished":false,
^
json_test.c:16:6: warning: missing terminating " character
"isPublished":false,
^
json_test.c:16:6: error: missing terminating " character
"isPublished":false,
^~~~~~~~~~~~~~~~~~~~~
json_test.c:17:5: error: stray ‘\’ in program
"comments": null
^
json_test.c:17:6: warning: missing terminating " character
"comments": null
^
json_test.c:17:6: error: missing terminating " character
"comments": null
^~~~~~~~~~~~~~~~~
json_test.c:18:5: error: expected identifier or ‘(’ before ‘}’ token
}";
^
json_test.c:18:6: error: stray ‘\’ in program
}";
^
json_test.c:18:7: warning: missing terminating " character
}";
^
json_test.c:18:7: error: missing terminating " character
}";
^~
复制代码
对于这个问题的办理实在不难,只需要在每一行的后边加上连词符号 \ 即可,将多行拼成1行
代码做出修改后如下:
char *str = "\
{ \
"title":"JSON Example",\
"author": { \
"name":"John Doe",\
"age": 35,\
"isVerified":true\
}, \
"tags":["json", "syntax", "example"],\
"rating": 4.5,\
"isPublished":false,\
"comments": null\
}";
复制代码
再次对其进行编译,之前的报错根本消失
但是,我们发现了别的一个告诫错误
json_test.c: In function ‘main’:
json_test.c:8:32: warning: backslash and newline separated by space
"title":"JSON Example",\
json_test.c:14:51: warning: backslash and newline separated by space
"tags":["json", "syntax", "example"], \
/tmp/ccFimHV4.o: In function `main':
json_test.c:(.text+0x22): undefined reference to `cJSON_Parse'
json_test.c:(.text+0x39): undefined reference to `cJSON_GetObjectItem'
collect2: error: ld returned 1 exit status
复制代码
同时回到text editor代码中,发现代码中反斜杠居然会出现两种颜色
这个现象很有意思,一开始并没有留意这是为什么,后边结合告诫
在这几个颜色差别的反斜杠之间瞎点,发现一个小问题
这些差别于大众的颜色的反斜杠,后边带有空格,其他的没有
尝试着将后边的空格去掉之后,再次进行编译,前边的告诫错误荡然无存
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4