GLib基础——基础数据类型

概览

为了区别标准C,同时为了编程方便、自成体系,GLib定义一些基础的数据类型。大致可以分为如下几类:

  • 不属于标准C的全新类型,但通常会在各种库头文件中定义,比如gboolean, gssize;
  • 大小固定的整数类型,保证了跨平台一致性,比如gint8, guint8, gint16, guint16, gint32, guint32, gint64, guint64;
  • 对接标准C重新定义类型,相对而言更易用,比如gpointer, gconstpointer, guchar, guint, gushort, gulong,以及gchar, gint, gshort, glong, gfloat, gdouble;
  • 对接标准C99的类型,即使编译器不支持C99,比如gsize, goffset, gintptr, guintptr
  • 确定标准整数、浮点数上下限的宏,比如G_MININT8、G_MAXINT8、G_MAXUINT8等;
  • 针对g_print()打印的格式化宏。也许不能在标准C的printf()下工作,但总是兼容C99的printf()。比如G_GINT16_MODIFIER、G_GINT16_FORMAT。

由于上述大多数类型字面含义已经足够清晰,这里只对部分进行介绍。

定义特殊整数常量的宏

G_GINT64_CONSTANT()、G_GUINT64_CONSTANT()等分别用于对于参数后附加类型标识符。

#define G_GINT64_CONSTANT(val) (val##L)
#define G_GUINT64_CONSTANT(val) (val##UL)
#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)

部分数据类型说明

1. gboolean

typedef gint   gboolean;
#define TRUE (!FALSE)
#define FALSE (0)

gboolean定义了布尔类型,用于包含TRUE或FALSE。但是实际中,由于可能包含一个gint,所以常用 if (condition) 或if (!condition) 来进行判断,而不是判断它是否等于 TRUE或FALSE。

2. gpointer 与 gconstpointer

gpointer 与 gconstpointer 定义了两种可以指向任何数据的指针,后者约定指向的数据不可修改。

typedef void* gpointer;
typedef const void *gconstpointer;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值