在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 programchar *str = \"^
json_test.c:6:15: warning: missing terminating " characterchar *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代码中,发现代码中反斜杠居然会出现两种颜色

这个现象很有意思,一开始并没有注意这是为什么,后边结合警告

在这几个颜色不同的反斜杠之间瞎点,发现一个小问题

这些不同于大众的颜色的反斜杠,后边带有空格,其他的没有

尝试着将后边的空格去掉之后,再次进行编译,前边的警告错误荡然无存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1534583.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Debian11源码安装mysql5.7

#!/bin/bash# 安装依赖 apt-get update && apt-get install -y wget make gcc g cmake bison libncurses5-dev libssl-dev libtool pkg-config> /dev/null # 安装包所在目录 packages"/usr/local/src" # 数据目录 datadir"/hskj/mysql" # pid文…

解决Docker镜像不可下载

使用国内可信的镜像中心 可信国内镜像网址:https://hub.atomgit.com/ 点击镜像仓库 搜索想要的镜像 按如图所示,即可查看对应的版本 点击复制,即可下载使用 缺点: 可用的镜像相比于docker官方量少 并且,获取的镜像名字…

文献速递 | E3泛素连接酶PELI2介导STING信号激活的阈值设定

自从2013年cGAS被发现,cGAS-STING通路在检测和应对病毒和细菌感染等外部威胁和癌症发展等内部威胁中的作用已经越来越多的被提及。cGAS-STING通路几乎无处不在,它可以监测细胞质中的dsDNA,而dsDNA是病原体感染、细胞损伤和癌症等多种威胁的危…

OM6626国产低功耗蓝牙对比NRF52832/NRF52810

OM6626 是一款超低功耗的蓝牙soc 主要特性: 支持BLE5.3支持SIG Mesh支持2.4G长包主频64Mhz,80KB RAM主要应用在esl电子价签,IoT模组、CGM、高报告率HID设备 PUM特点 1.71~3.6v供电电压1秒间隔广播平均电流:9uA;1秒间…

会议室占用【python实现】

题目来自此 思路见代码随想录合并区间 def main():import astmeetings ast.literal_eval(input())meetings.sort(keylambda x:x[0])result [meetings[0]]for meeting in meetings:if meeting[0] < result[-1][1]:result[-1][1] meeting[1]else:result.append(meeting)pr…

轨到轨运算放大器

轨到轨并不一定是指输出轨到轨&#xff0c;也有可能是输入轨到轨&#xff1a; 例如LM358不是轨到轨运放&#xff0c;输出信号电压是VCC - 1.5v &#xff0c; 如果采用锂电池供电&#xff0c;量取锂电池的电压&#xff0c;输出电压等于锂电池的3.7 - 1.5V&#xff0c;这样电压区…

下一代 AI 医疗:知识图谱RAG + 多智能体,听医生的话没前途,让医生听你的话才是正道!

下一代 AI 医疗&#xff1a;知识图谱RAG 多智能体&#xff0c;听医生的话没前途&#xff0c;让医生听你的话才是正道&#xff01; 医疗算法趋势现代 AI 医疗算法问题医学影像算法的局限医疗知识图谱的问题基于最本质循证医学实现人类级因果推理摆脱LLM概率性输出 嘘&#xff0…

【二叉树遍历算法应用】------补录

0.二叉树结点的链式存储结构 #include<stdio.h> #include<stdlib.h> #include<stdbool.h>typedef char TElemType;//树中元素基本类型为char类型//二叉树结点链式存储结构&#xff08;二叉链表&#xff09; typedef struct BiNode {TElemType data;//数据域…

【面试干货】软件测试面试题库

我把软件测试面试的整个题库都搬来啦&#xff0c;面试能拿下80%&#xff0c;剩下就看你满不满意公司的开价咯。以下答案都是我自己写的&#xff0c;大家根据自己的经历稍作改动&#xff0c;答案仅供参考哦&#xff01;题库持续更新&#xff0c;需要PDF版可以点击文末小卡片领取…

牛耕分解+形态学分割 全覆盖路径规划(二)Part1. 分割

书接上文&#xff1a;牛耕分解形态学分割 全覆盖路径规划&#xff08;一&#xff09; 前置文章1&#xff1a;房屋区域分割算法 Morphological Segmentation 前置文章2&#xff1a;牛耕覆盖算法 Boustrophedon Coverage Path Planning 项目地址&#xff1a;ipa320 / ipa_cove…

2.Jmeter安装配置,核心目录详情,组件和作用域

一、Jmeter安装配置以及核心目录详情 Jmeter基于java语言来开发&#xff0c;java需要jdk环境。 1.安装jdk并且配置jdk的环境变量。 2.jmeter只需要解压就可以使用了。 3.在D:\apache-jmeter-5.5\bin目录下双击jmeter.bat文件就可以启动使用了 backups&#xff1a;自动备份的目录…

开放混合 数据驱动 Cloudera的商业AI布局

8月7日在新加坡揭幕的Cloudera EVOLVE24大会&#xff0c;是全球系列活动的第一站&#xff0c;此后还将在全球多个国家陆续举行。大会从亚太地区起步&#xff0c;也彰显了Cloudera对亚太市场的重视。“亚太地区已经成为我们业务增长最快的区域。在混合云环境之下&#xff0c;越来…

rust + bevy 实现小游戏 打包成wasm放在浏览器环境运行

游戏界面 代码地址 github WASM运行 rustup target install wasm32-unknown-unknown cargo install wasm-server-runner cargo run --target wasm32-unknown-unknowncargo install wasm-bindgen-cli cargo build --release --target wasm32-unknown-unknown wasm-bindgen --…

海报生成用什么软件好?小白看这里

想要让你的信息在人群中脱颖而出吗&#xff1f;一张精心设计的海报无疑是最佳选择。 无论是宣传活动、展示作品还是装饰空间&#xff0c;海报都能以视觉的力量抓住人们的眼球。 但海报制作软件哪个好呢&#xff1f;别急&#xff0c;这里有五个超实用的海报制作软件&#xff0…

再次进阶 舞台王者 第八季完美童模全球赛代言人【赵御涵】赛场+秀场超燃合集!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上&#xff0c;一位才能出众的少女——赵御涵迎来了她舞台生涯的璀璨时刻。 代言人——赵御涵&#xff0c;以璀璨童星之姿&#xff0c;优雅地踏上完美童模盛宴的绚丽舞台&#xff0c;作为开…

如何对离线数仓和准实时数仓进行精准把控?

数仓是指将企业中各个业务系统产生的数据进行汇总、清洗、转化和整合&#xff0c;以便为企业提供决策支持和数据分析的存储和管理系统。 离线数仓和准实时数仓&#xff0c;这两种数据仓库模式&#xff0c;各有其特点&#xff0c;根据其特点和适用的应用场景选择合适的仓库模式…

汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)

题目: 编写一段主引导扇区程序,计算从1加到1000的和,并在屏幕上显示结果 输出结果: 代码: jmp near start text db 123...1000 start:mov ax,0x07c0mov ds,ax ;数据段从主引导区开始mov ax,0xb800mov es,ax ;显存地址从B8000物理地址开始mov si,text ;si指向text的第…

2024 年 .NET 高效开发精选实用类库

目录 前言 1、Entity Framework Core 2、Newtonsoft.Json 3、AutoMapper 4、HttpClient 5、Serilog 6、Hangfire 7、xUnit 8、OxyPlot 9、Task Parallel Library (TPL) 10、Elasticsearch.NET 和 NEST 总结 最后 前言 在平时开发中&#xff0c;好的类库能帮助我们…

华火10号店隆重开业,千城万店打造增长新引擎

风吹洛阳城&#xff0c;花开盛唐梦&#xff01;9月11日&#xff0c;相约在洛阳&#xff0c;在时光、空间与浪漫的交错中&#xff0c;华火10号店盛大开业。此次开业将为洛阳市民提供领先行业的绿色厨电产品&#xff0c;营造高端化、体验化、智慧化的门店氛围&#xff0c;打造极致…

说说synchronized的锁升级过程

在 JDK 1.6之前&#xff0c;synchronized 是一个重量级、效率比较低下的锁&#xff0c;但是在JDK 1.6后&#xff0c;JVM 为了提高锁的获取与释放效&#xff0c;,对 synchronized 进行了优化&#xff0c;引入了偏向锁和轻量级锁&#xff0c;至此&#xff0c;锁的状态有四种&…