在Ubuntu中编译含有JSON的文件出现报错

news2024/9/21 4:23:48

 

         在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代码中,发现代码中反斜杠居然会出现两种颜色

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

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

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

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

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

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

相关文章

Web植物管理系统-下位机部分

本节主要展示上位机部分,采用BSP编程,不附带BSP中各个头文件的说明,仅仅是对main逻辑进行解释 main.c 上下位机通信 通过串口通信,有两位数据验证头(verify数组中保存对应的数据头 0xAA55) 通信格式 上位发送11字节…

保护您的企业免受网络犯罪分子侵害的四个技巧

在这个日益数字化的时代,小型企业越来越容易受到网络犯罪的威胁。网络犯罪分子不断调整策略,并使用人工智能来推动攻击。随着技术的进步,您的敏感数据面临的风险也在增加。 风险的不断增大意味着,做好基本工作比以往任何时候都更…

Java--stream流、方法引用

Stream流 - Stream流的好处 - 直接阅读代码的字面意思即可完美展示无关逻辑方式的语义 - Stream流把真正的函数式编程风格引入到Java中 - 代码简洁 - Stream流的三类方法 - 获取Stream流 - 创建一条流水线,并把数据放到流水线上准备进行操作 - 中间方法 - 流水线上的操作 - 一次…

【代码随想录训练营第42期 Day60打卡 - 图论Part10 - Bellman_ford算法系列运用

目录 一、Bellman_ford算法的应用 二、题目与题解 题目一:卡码网 94. 城市间货物运输 I 题目链接 题解:队列优化Bellman-Ford算法(SPFA) 题目二:卡码网 95. 城市间货物运输 II 题目链接 题解: 队列优…

MySQL高阶1783-大满贯数量

题目 找出每一个球员赢得大满贯比赛的次数。结果不包含没有赢得比赛的球员的ID 。 结果集 无顺序要求 。 准备数据 Create table If Not Exists Players (player_id int, player_name varchar(20)); Create table If Not Exists Championships (year int, Wimbledon int, F…

Unity 高亮插件HighlightPlus介绍

仅对官方文档进行了翻译 注意:官方文档本身就落后实际,但对入门仍很有帮助,核心并没有较大改变,有的功能有差异,以实际为准.(目前我已校正了大部分差异,后续我会继续维护该文档) 为什么为该插件做翻译?功能强大,使用简单,且还在维护. 基于此版本的内置渲染管线文档 快速开始…

C语言之预处理详解(完结撒花)

目录 前言 一、预定义符号 二、#define 定义常量 三、#define定义宏 四、宏与函数的对比 五、#和## 运算符 六、命名约定 七、#undef 八、条件编译 九、头文件的包含 总结 前言 本文为我的C语言系列的最后一篇文章,主要讲述了#define定义和宏、#和##运算符、各种条件…

9.18作业

提示并输入一个字符串&#xff0c;统计该字符串中字母、数字、空格、其他字符的个数并输出 代码展示 #include <iostream>using namespace std;int main() {string str;int countc 0; // 字母计数int countn 0; // 数字计数int count 0; // 空格计数int counto 0;…

IEEE-754 32位十六进制数 转换为十进制浮点数

要将 IEEE-754 32位十六进制数 转换为 十进制浮点数&#xff0c;可以使用LabVIEW中的 Type Cast 函数。以下是一些具体步骤&#xff0c;以及相关实例的整理&#xff1a; 实现步骤&#xff1a; 输入十六进制数&#xff1a;在LabVIEW中&#xff0c;首先需要创建一个输入控制器&am…

2024最新软件测试面试题【1000道题含答案】

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果&#xff0c;如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化…

C++之继承(通俗易懂版)

前言&#xff1a;我们都知道C是一门支持过程化编程&#xff0c;面向对象的高级语言&#xff0c;既然是面向对象的语言&#xff0c;那么对于对象而言&#xff0c;对象会有很多中相同的属性&#xff0c;举个例子:你和你老师&#xff0c;你们都有着共同的属性和身份&#xff0c;例…

Longman Dictionary of Contemporary English (朗文当代高级英语辞典)

Longman Dictionary of Contemporary English {朗文当代高级英语辞典} 1. Longman Dictionary of Contemporary English1.1. school References 1. Longman Dictionary of Contemporary English https://www.ldoceonline.com/ 1.1. school https://www.ldoceonline.com/dicti…

C++: 高效使用智能指针的8个建议

前言&#xff1a;智能指针是C11的新特性&#xff0c;它基于RAII实现&#xff0c;可以自动管理内存资源&#xff0c;避免内存泄漏的发生&#xff0c;但是智能指针也并不是万能的&#xff0c;如果不正确使用智能指针&#xff0c;也会导致内存泄漏的发生&#xff0c;因此&#xff…

嵌入式人工智能项目及人工智能应用项目——大合集列表查阅

本文的项目合集列表可能更新不及时&#xff08;会及时更新&#xff09;&#xff0c;可查阅实时更新的链接如下。 嵌入式人工智能及人工智能应用项目合集实时更新链接如下&#xff1a; 阿齐嵌入式人工智能及人工智能应用项目合集 (kdocs.cn)https://www.kdocs.cn/l/cc97tuieys4…

MacOS安装MAT教程

MAT下载地址MAT下载地址MAT下载地址MAT下载地址 如果不知道你的芯片类型, 可以执行如下命令 uname -m

Fiddler抓包工具实战

文章目录 &#x1f7e2; Fiddler入门到精通&#x1f449;主要功能&#x1f449;使用场景 &#x1f7e2; 一、Fiddler抓包和F12抓包对比&#x1f7e2; 二、Fiddler的核心功能&#x1f7e2; 三、Fiddler的工作原理&#x1f7e2; 四、Fiddler功能配置使用&#x1f449;规则设置&am…

力扣 11题 盛最多水的容器

前言&#xff1a;这道题其实挺有意思的&#xff0c;前段时间在刷视频的时候看都了很多博主都在讲解这道题&#xff0c;最近在写一些算法的东西&#xff0c;我就顺势刷到了这道题。在这里写一写我自己的对这道题的理解。 题目详见&#xff1a;https://leetcode.cn/problems/con…

【DAY20240918】03教你轻松配置 Git 远程仓库并高效推送代码!

文章目录 前言 git diff一、远程仓库&#xff1f;1、在 Gitee 上新建仓库&#xff1a;2、Git 全局设置&#xff1a;3、添加远程仓库&#xff1a;4、推送本地代码到远程仓库&#xff1a;5、输入用户名和密码&#xff1a;6、后续推送&#xff1a; 二、全情回顾三、参考 前言 git …

谷歌浏览器扩展程序怎么提升CSS开发效率

在现代Web开发中&#xff0c;CSS&#xff08;层叠样式表&#xff09;是不可或缺的一部分&#xff0c;它负责网页的视觉呈现和布局设计。为了提高CSS开发的效率&#xff0c;谷歌浏览器提供了许多实用的扩展程序。本文将介绍几个关键的扩展程序&#xff0c;并探讨如何利用它们来优…

网络安全学习(五)Burpsuite实战

bp功能确实强大&#xff0c;记录一个bp手机验证码的实例。 当然&#xff0c;首先要打开bp&#xff0c;设置好浏览器的代理。 浏览器访问实例网址www.xxx.com&#xff08;隐藏真实网址&#xff09;。 真实网址有个注册功能&#xff0c;需要手机验证码。 好的&#xff0c;我们…