glib是否能以一种不引人注目的方式使用?

ein*_*ica 8 c coding-style glib

我在标准C库的顶部为C寻找一个好的通用库,并且已经看到了一些使用glib的建议.你的代码中有多么"突兀"?为了解释我所说的突出性的意思是,我在首先注意到的参考手册基本类型部分,心里对自己说,"什么,我是不是要开始使用gint,gchar和gprefixing geverything杜松子酒广明源的G-码gnow?"

更一般地说,您是否可以仅在本地使用它而不需要在代码中使用其他功能或文件来了解其用途?它是否强制对代码进行某些假设,或者对编译/链接过程施加约束?是否在运行时为全局数据结构占用了大量内存?等等

R..*_*R.. 6

关于glib最引人注目的事情是任何使用它的程序或库都不能很好地防止资源耗尽.它无条件地abortmalloc失败时调用,你无法解决这个问题,因为整个库的设计都围绕着它们的内部分配功能g_malloc"不能失败"的概念.

至于丑陋的"g"类型,你绝对不需要任何演员阵容.这些类型100%等同于标准类型,并且基本上只是从glib的早期(错误)设计中汲取.不幸的是,glib开发人员缺乏对C的理解,这可以通过这个FAQ来证明:

为什么要使用g_print,g_malloc,g_strdup和其他glib函数?

"关于g_malloc(),g_free()和兄弟,这些函数比它们的libc更安全.例如,如果用NULL调用,则返回g_free().

(来源:https://developer.gnome.org/gtk-faq/stable/x908.html)

仅供参考,free(NULL)完全有效的C,并完全相同:它只是返回.

  • +1打破我的假设,即glib是由C专家编写的. (3认同)