
C语言
文章平均质量分 59
ALonWol
这个作者很懒,什么都没留下…
展开
-
[SDS阅读理解/0]前言
C语言 SDS 字符处理原创 2017-11-18 09:35:03 · 445 阅读 · 0 评论 -
Orx引擎中单链表实现的一个小技巧
猿并不一定实现过单链表,但学过数据结构的猿一定实现过单链表。一般的,链表的结构定义是这样的简陋版链表,自己实现的,仅供参考,更专业版的可以看glib库或Linux内核里的。但是,Orx的作者实现的单链表就有点另类了,可以看这位博主写的介绍链接。这里就不重复内容了,只是写个例子体验下该技巧:/* wtl_test.c */#include <stdio.h>#include ...原创 2018-05-06 17:09:12 · 317 阅读 · 0 评论 -
系统的大小端
网上已有很多关于大小端的文章,我这里再写一篇,虽然有重复,但目的是将自己的见解记录下来,并非无意义的复制粘贴。关于大小端的解释,百度百科大小端说的还算挺清楚的。当然,如果单看百度百科无法理解,可以多找几篇别人写的文章,看看别人是如何理解的,我是觉得多看几篇比单看一篇理解的清楚些。光看文章,以为自己理解了,那肯定是不行的,理论(看文字)结合实践(敲代码),理解才会更深刻。 大小端的具体原创 2018-01-13 21:14:20 · 728 阅读 · 0 评论 -
[SDS阅读理解/8]源码中的函数/5
空了一段时间…不过还是得完成记录 第二十四个。(就快写完注释了,结果一点保存全没了…什么奇葩。重写一遍吧:)该函数的作用和第二十五个函数一样,就是将fmt这串字符格式化后保存到s中并返回它的地址。我们一般直接使用第二十五个函数,这个函数是给第二十五个函数调用的。主要涉及到两个知识点-变参函数和va_list这个参数(来自<stdarg.h>),网上搜索相关内容看下,再用下sprintf(原创 2017-12-14 23:09:40 · 428 阅读 · 0 评论 -
[SDS阅读理解/9]源码中的函数/6
感觉分的太散了,每篇才几个函数,导致章节太多…不过还是先记录完再纠结这个问题吧。 第二十六个。该函数的作用和第二十五的差不多,只不过速度会快一点,因为函数内部没有使用C标准库中的类sprintf()函数(作者说这类函数的速度很慢…),但是处理的格式没那么全,如浮点格式的%f,且有些格式是作者自创的,如%U64位无符号整形格式。这些说明在作者注释里都有提到。关于变参问题,我搜索了解了下,发原创 2017-12-20 22:58:05 · 429 阅读 · 0 评论 -
[SDS阅读理解/6]源码中的函数/3
还有好几个函数/* Increment the sds length and decrements the left free space at the * end of the string according to 'incr'. Also set the null term * in the new end of the string. * * This function is原创 2017-11-23 23:53:59 · 353 阅读 · 0 评论 -
[SDS阅读理解/5]源码中的函数/2
接着讲函数 第十个。该函数的作用是为一个sds字符串变量申请更多的剩余空间,作者注释里有讲。学习使用别人的代码一定要看源码注释!函数里头有用到两个宏SDS_TYPE_MASK SDS_MAX_PREALLOC,它们的作用在宏那节有讲。下面直接在代码中讲解要点。// 作者注释/* Enlarge the free space at the end of the sds string so原创 2017-11-22 23:47:58 · 431 阅读 · 0 评论 -
[SDS阅读理解/3]源码中的函数/0
上节讲了源码中的数据结构,这节开始讲源码中的函数。由于函数比较多,打算分开几节 先讲下头文件中的6个inline函数。对于inline的定义,看下百科inline关键字第一个static inline size_t sdslen(const sds s) { unsigned char flags = s[-1]; switch(flags&SDS_TYPE_MASK)原创 2017-11-19 21:39:06 · 468 阅读 · 0 评论 -
[SDS阅读理解/7]源码中的函数/4
每天记录几个把它记录完吧。还有20多个 第十九个。该函数的作用是将t指向的那串字符拷贝len长度个到s中。注意是从s的首地址开始,会覆盖原来的内容。// 作者注释/* Destructively modify the sds string 's' to hold the specified binary * safe string pointed by 't' of length '原创 2017-11-25 00:07:19 · 358 阅读 · 0 评论 -
[SDS阅读理解/2]源码中的数据结构
这节讲下sds所用到的数据先贴代码typedef char *sds;/* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here to document the layout of type 5 SDS strings. */struct __attribute__ ((__p原创 2017-11-18 22:42:37 · 381 阅读 · 0 评论 -
[SDS阅读理解/4]源码中的函数/1
继续讲解源码中的函数 这次的函数全在.c文件中。先看前两个。static inline int sdsHdrSize(char type) { switch(type&SDS_TYPE_MASK) { case SDS_TYPE_5: return sizeof(struct sdshdr5); case SDS_TYPE_原创 2017-11-21 22:34:43 · 414 阅读 · 0 评论 -
[SDS阅读理解/1]源码中的宏
C语言 SDS 宏原创 2017-11-18 11:37:54 · 786 阅读 · 2 评论 -
[stretchy_buffer.h]一个简单的类C++ vector 数组的源码阅读
stretchy_buffer.h源码就只有几个宏和一个函数。作者也在里边进行了一些说明和使用介绍,是英文的,而且没有具体的实现原理。当然,老鸟一看就懂了,我是菜鸟,一看再看才懂的。这里我把自己看后的理解记录下来,如果有人正好需要的话,希望能有帮助。一般的,数组在声明的时候,它的大小就已经确定了,所能存储的元素个数不能大于数组的大小。就算我们可以在堆空间中申请任意(这里的任意是指合理的情况...原创 2018-06-05 00:03:26 · 506 阅读 · 0 评论