GLib学习笔记
一 Glib笔记1
以前主要是做C++,最近有个机会转到嵌入式的C,大部分用的是Glib/Gobject系统,前一周的样子把相关内容大致浏览了一遍,主要以reference Menu为主。我看英文书的一个习惯是看一章,总结一章,这样学得快,记得牢。以前整理过很多书籍,不过都是本地的doc文档。在学Glib过程中,从网上学到很多知识,所以我也放到博客上吧。仅供自己总结,风格比较随意。
这一部分主要是Glib的基础
1.1 版本信息
注意,自己的程序里边都要包含<glib.h>
下面这些宏:用于版本信息,主要用于configure时候的版本检测,一般应用程序不太用这个
[这一小节没什么东西]
1.2 基本数据类型
Glib提供了一套可移植的原始数据类型,例如gint等,知道这个就行了,以后写Glib的程序,尽量用它定义的数据类型
有几个值得注意:
l gboolean:返回TRUE或FALSE
l 代表返回void*指针的--gpointer,以及一个const void* gconstpointer
l 返回可表示范围的,例如G_MINSHORT,G_MAXSHORT等
l 提供给print和scan函数的宏,如G_GINT16_MODIFIER/G_GINT16_FORMAT等
l 64位整数,有两个红,G_GINT64_CONSTANT,G_GUINT64_CONSTANT。
l sizeof(struct)返回gsize类型,goffsset=gint64
[没什么难度这一节]
1.3 基本数据类型的表示范围
上一节也提到过,例如G_MAXINT,G_MININT等
1.4 标准宏
#define G_STRUCT_MEMBER(member_type, struct_p, struct_offset)
member_type:成员类型
strutc_p:指向该结构的指针
struct_offset:偏移
估计里边的实现是 (member_type*)((gchar*)struct_p + struct_offset)
类似的还有:
#define G_STRUCT_MEMBER_P(struct_p, struct_offset)
没有前面的强制类型转换了
#define G_STRUCT_OFFSET(struct_type, member)
返回member在结构中的偏移字节。具体怎么实现有点忘记了,但是内核代码中常见这样的内容。
1.5 类型转换宏
#define GINT_TO_POINTER (i)
#define GPOINTER_TO_INT (p)
#define GUINT_TO_POINTER (u)
#define GPOINTER_TO_UINT (p)
#define GSIZE_TO_POINTER (s)
#define GPOINTER_TO_SIZE (p)
目的其实很简单,就是在指针类型中存储整数类型。我们倒是经常在Windows下用DWORD存储指针类型的数据。
1.6 字节序宏
转换字节序的一些辅助宏和函数,例如g_htons,g_ntohs等。
l 本机是怎样的字节序?查看宏定义G_BYTE_ORDER
没什么意思
1.7 数值定义
定义一些数值常量。
G_PI,定义Pi常量。
没什么意思
1.8 其他杂项
l 定义一个多行的宏,G_STMT_START和G_STMT_END,其实就是do/while{0}的组合
l G_BEGIN_DECLS,G_END_DECLS,头文件中用的开头和结尾
有些有用,到时候再查就知道了。
1.9 原子操作函数
很多啊
gint g_atomic_int_get ();
void g_atomic_int_set ();
void g_atomic_int_add ();
gint g_atomic_int_exchange_and_add ();
gboolean g_atomic_int_compare_and_exchange ();
gpointer g_atomic_pointer_get ();
void g_atomic_pointer_set ();
gboolean g_atomic_pointer_compare_and_exchange
();
void g_atomic_int_inc (gint *atomic);
gboolean g_atomic_int_dec_and_test (gint *atomic);
manual做的也真是不到位,竟然连参数都没有写进来。
看这些东西,最好装一个source insight。直接看源码。
分享到:
相关推荐
GLib中文参考手册,学习GLib库的好帮手,提高自己的C语言开发水平。
glib-2.58.1
GLib Reference Manual for GLib 2.16.1 GLib 参考手册
glib的Windows版本开发库,包含头文件及lib,运行时的动态库
glib 用vs2008编译好的,里面包含debug版本的lib文件
glib安装详细教程
这个是glib2-devel,它和glib.2..不一样。 我是在编译heartbeat时,遇到缺少glib2-devel包的时候,下载的。 包含64位系统的和32位系统的
glib2.2.1,linux glib库
Glib离线API手册
第一个交叉编译通过了glib,千辛万苦!!
在windwos下编译出来的glib库,可以直接包含头文件进行使用,在整个编译过程中比较的繁杂,依赖项太多,差点吐血了,还好最终还是编译出来了,亲测可用
glib库
这个是glib2.62,以及依赖,为了保证正确地安装glib2.62
glib dll files.
压缩包包含GLib库运行时需要依赖的所有库文件
u8glib库支持多种oled显示驱动,功能强大
《GLib库入门与实践》专栏的配套源码。专栏地址:https://blog.csdn.net/field1003/article/details/123420966。 还在为C语言开发时重复造轮子苦恼吗,链表、队列、线程池,统统都得自己实现?先了解一下GLib-2.0库...
本代码展示了如何利用glib库解析Key-value文件。本示例采用 Ubuntu18.04 + glib2.0 + Qt +c.
linux glib-2.16.5 glib-2.16.5
用于windows下vc程序开发所调用glib库,有时候你只有x86版本,当你需要升级平台到x64时需要寻找很长时间,但下载该文件夹中就包含x86、x64。glib库(SDK)文件,适应于windows 7 x64/x86开发调用,版本为v2.26.1,...