| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 【项目学习总结】GitHub : miloyip/json-tutorial(轻量级JSON) -> 正文阅读 |
|
[开发工具]【项目学习总结】GitHub : miloyip/json-tutorial(轻量级JSON) |
GitHub : miloyip/json-tutorial(轻量级JSON)一、项目介绍本工程是一个轻量版JSON,来自GitHub,由腾讯 T4 专家、互动娱乐事业群魔方工作室群游戏客户端技术总监叶劲峰(Milo Yip)开发,把项目地址赋于此:miloyip/json-tutorial。 项目共分为8部分,用C语言实现了一个轻量级的JSON,用来入门学习一些编程的基础知识非常好,几乎不需要任何其他知识,懂C语言即可入手。 关于作者: 二、知识点总结1. 项目中的命名格式:1.1 xxx.h文件中的#ifndef (tutorial01)C 语言有头文件的概念,需要使用
宏的名字必须是唯一的,通常习惯以 1.2 变量命名格式(tutorial01)通常枚举值用全大写(如 2. 善用枚举(tutorial01)本项目中的错误码,均是通过枚举来定义的,既可清楚得表明意义,代码又简洁优雅。如本项目中的错误码所示:
3. 宏定义函数3.1 do-while的使用(tutorial01)有些同学可能不了解
只用
用 do while 就行了:
3.2 哪些情况下必须用宏定义函数?(tutorial01)如测试框架使用了
4. 优雅的代码4.1 形参太多时用结构体指针传递(tutorial 01)函数间通常会传递多个形参,当形参较多时既影响程序美观,又影响程序速度。因此通常把多个参数存到一个结构体对象里,在函数间只传递这个对象的地址即可。
4.2 errno的使用(tutorial02)errno在初试时常被程序员置为0,一旦程序检查出错误如越界等,就会改变errno的值。然而,errno的值在被修改后不会自动改回0,所以如果下次判断到errno不为0,不一定是程序又出错了,而可能是上一次错误后errno没被改回0。 所以,在判错时,通常用errno加上错误检查,如本项目中用errno检查越界,不能简单地if(errno == ERANGE),而是if(errno == ERANGE && (n == HUGE_VAL || v->n == -HUGE_VAL))。 4.3 union的使用(tutorial03)本项目中,所有数据(不管是字符串,还是数字、布尔值、字符等)均用一个结构体 如下所示,结构体
但由于本项目中一个lept_value对象只会存储一个值,要么数字、要么字符串,所以上述结构体显然浪费了空间。可用union修改如下:
5. 数据结构5.1 手写动态数组本项目实现了堆栈的动态压入及弹出操作(以字节为操作单位)。每次可要求压入任意大小的数据,它会返回数据起始的指针。以下代码的意思,是把结构体
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/23 19:28:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |