glib不是一个学院派的东西,也不是凭空想出来的,完全是在开发gtk+的过程中,慢慢总结和完善的结果。
如果你是一个工作3年以上的C语言程序员,现在让你讲讲写程序的苦恼,你可能有很多话要说,但如果你有时间研究一下glib,
你会发现,很多苦恼已不再成其为苦恼,glib里很多东西正是你期望已经 久的。
gobject是glib的精粹,glib是用C实现的,但在很大程序是基于面向对象思想设计的,gobject是所有类的基类。
signal在其中也是 一大特色,signal与操作系统中的signal并不一样,它是类似消息一样的东西,让消息在各个对象间传递,但尽量降低对象间的耦合。
仔细读一下它的 代码,唯一想说的话就是“绝!”。
动态数组、链表、哈希表等通用容器,在不同的公司,在不同的时期,在不同的情况下,我们每个人对每一种容器,可能都实现过N次以上。
甚至在同一个项目里, 出现几份链表的实现,也并非罕见。
一直在抱怨,标准C中为什么没有类似于STL的标准容器,让全世界的程序员在数以万次的重复实现它们。
不过,还算走运, 有了glib,恶梦在此终结了。
glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器,完全是面向对象设计的,实现得非 常精致。不用白不用,别客气了。
glib还对C的内存申请释放做了管理。通过编译设置可以方便的对重复释放,未释放等错误进行分析。