sofsip学习系列--GLib学习笔记一,简介

来源:互联网 发布:广东体育网络电视 编辑:程序博客网 时间:2024/05/21 21:49

用c/c++写东西的时候,经常需要自己实现一些常用的算法或功能,工作量很大很烦人。后来不经意间发现了glib库,觉得很不错,非常有必要研究一下。如果应用到将来的工作中,想必会大大提高工作效率和代码质量。
glib库是一套跨平台的开发工具库,支持类Unix系统、Windows、BeOS等系统,基于LGPL协议。
最新的开发文档版本是2.16.3,下载地址为http://library.gnome.org/devel/glib/glib-html-2.16.3.tar.gz
在以后的时间里,我会写一些glib的学习体会,大家有兴趣的话可以看看。
今天就简单介绍一下glib吧。
从文档上看,glib主要分为4大部分:
一,基本数据类型和宏定义,参考glib-fundamentals.html,其中需要注意的有:
1,基本数据类型,定义了gboolean, gsize, gssize, gint8, guint8, gint16, guint16,gint32, guint32, gint64, guint64, gpointer, gconstpointer, guchar,guint, gushort, gulong, gchar, gint, gshort, glong, gfloat,gdouble(如果是在glib上进行跨平台开发,建议使用这些数据类型,因为类unix的数据类型头文件stdint.h里定义的是uint8_t这样的类型,而在windows的头文件里却使用的UINT8,为了统一,使用gint8挺好的。这里你可能有一个疑问,为什么不直接使用诸如unsigned char这样的描述呢?两个原因,一是unsignedchar这样不能直观的一下子看出这个类型的长度是多少bit,二是不同编译器对基本类型的长度定义不一样,比如16位编译器认为int是16位,32位的int是32位,对于64位的编译器,还有LP64、LLP64和ILP64的区别)
2,编译器的字节序判断和转换,比如GUINT_FROM_BE就是从big-endian字节序转换成当前字节序
3,原子数据加减赋值操作函数
二,系统功能函数
1,主事件循环
2,线程,线程池
3,异步队列
4,链接库的动态加载
5,内存管理
6,io操作,包括文件、管道和socket
7,错误信息、字符串输出、调试和日志函数
三,开发工具箱
1,单字节字符串工具,和crt字符串函数类似
2,单字节编码转换工具
3,unicode款字节字符串工具
4,base64编码解码工具
5,国际化工具
6,日期和时间函数
7,随机函数
8,hook函数
9,系统环境变量处理函数
10,词法分析工具
11,字符串自动补全工具
12,计时器
13,进程创建工具
14,文件系统工具
15,shell命令行处理工具
16,命令行参数分析工具
17,通配符匹配工具
18,perl兼容的正则表达式处理工具
19,简单的xml分析工具
20,类ini文件分析工具
21,xml书签交换语言分析工具
22,windows兼容函数
四,数据结构,不是线程安全,需要自己处理
1,内存片和内存块
2,单链表和双链表
3,双端队列
4,序列
5,回收栈
6,hash表
7,字符串和字符串集合
8,数组、指针数组和字节数组
9,平衡二叉树
10,N叉树
11,......(以下结构没有研究过,不了解,以后补上) 

原创粉丝点击