github优秀项目阅读(一) | CJSON源码阅读-基于版本1.0.0 | C语言源码阅读 (更新中)

01 前言

对于一个优秀的程序员来说, 除了要学好基础知识, 还要不断阅读, 吸收前人的优秀代码, 才能不断前进
因此我决定先从一个C语言的项目开始 , 这里选择的项目是一个比较简单的C项目: cJSON

01-简介及clone地址

cJSON: cJSON是一个高效的JSON解析器,
github地址: cJSON
在这里插入图片描述
之后就能下载代码了
在这里插入图片描述

02-目录结构介绍

cJSON项目的目录结构如下所示, 事实上, cJSON_Utils.h与cJSON_Utils.c文件并没有真正使用,其中的工具函数其实都被转移到了cJSON.c文件中, 阅读整个cJSON项目其实就两个文件

  • cJSON.h
  • cJSON.c

在这里插入图片描述

03-阅读环境搭建

这里我们选用QtCreator这个IDE进行源码的阅读, 搭建步骤如下

QtCreator: 官方网站

  1. 文件下载后解压到一个目录中, 文件->打开文件或项目, 选中刚刚解压好的所有文件
  2. 上一步结束后, 可能会发现只有一个CMakeLists.txt被导入到了工作空间中, 原因是我们没有进行项目的编译配置, 在左下角选择构建套件
    在这里插入图片描述
  3. 之后就能发现工作区域中项目目录结构变成如下

在这里插入图片描述
4. 可以点击左下角运行来运行一下默认的测试程序默认程序的main函数在text.c中)
在这里插入图片描述
5. 可以在应用程序输出窗口看到以下内容
在这里插入图片描述

03-编程风格

作者的编程风格是显而易见的

  1. 不在头文件中定义文件, 只声明, 因此头文件所有都加上extern关键字
  2. 对于以A.h命名的文件, 其中的函数名都以A_xxx方式命名

02 cJSON.h头文件

01-版权声明

02-避免头文件重复引入

#ifndef cJSON__h
#define cJSON__h
//编写头文件代码

#endif

03-兼容C++

#ifdef __cplusplus
extern "C"
{
#endif

/*兼容c++的代码*/

#ifdef __cplusplus
}
#endif

04-数据类型定义

/* cJSON Types: */
#define cJSON_False  (1 << 0)
#define cJSON_True   (1 << 1)
#define cJSON_NULL   (1 << 2)
#define cJSON_Number (1 << 3)
#define cJSON_String (1 << 4)
#define cJSON_Array  (1 << 5)
#define cJSON_Object (1 << 6)

#define cJSON_IsReference 256
#define cJSON_StringIsConst 512

05-cJSON结构体及其数据结构

06-钩子函数

07-函数声明

08-宏函数定义

03 cJSON.c源文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值