“C 语言再学习”的版本间的差异

来自Dennis的知识库
跳转到: 导航搜索
第三节
第32行: 第32行:
 
#endif
 
#endif
 
</pre>
 
</pre>
 +
 +
* 走到字符串到尾部,可以直接 for(;*p;p++),因为字符串末尾为 '\0',也就是 0。

2017年1月9日 (一) 14:28的版本

目录

从零开始的 JSON 库教程

第一节

  • cmake 可以生成 xcode 项目: cmake -G Xcode
  • 通常枚举值用全大写(如 LEPT_NULL),而类型及函数则用小写(如 lept_type
  • 宏的编写技巧: 反斜线代表该行未结束,会串接下一行。而如果宏里有多过一个语句(statement),就需要用 do { /*...*/ } while(0) 包裹成单个语句。
  • 测试框架使用了 __LINE__ 这个编译器提供的宏,代表编译时该行的行号。如果用函数或内联函数,每次的行号便都会相同。
  • 关于 inline: http://blog.csdn.net/hanchaoman/article/details/7270345

第二节

  • 提取重复代码,c 语言除了函数之外,宏是很重要的手段。
  • 用 #if 0 ... #endif 去禁用代码是一个常用技巧,而且可以把 0 改为 1 去恢复。
  • JSON 数字解析流程图

Json-number.png


第三节

  • man malloc 。 realloc 可以释放传入的指针所指向的内存,并分配新的。
  • 我发现 c 语言提藏简洁代码。
  • vector 或者其他数据结构的增长因子以小于 2 为佳,比如 1.5,为什么参考 https://www.zhihu.com/question/25079705/answer/30030883
  • 对于很小的『函数』,直接利用宏内联是更习惯的做法,比如 lept_init
  • 利用 ifndef 来做默认参数配置,用户可以自定义。
#ifndef LEPT_PARSE_STACK_INIT_SIZE
#define LEPT_PARSE_STACK_INIT_SIZE 256
#endif
  • 走到字符串到尾部,可以直接 for(;*p;p++),因为字符串末尾为 '\0',也就是 0。
个人工具
名字空间

变换
操作
导航
工具箱