C指针原理(74)-GLIB
2014-01-26 14:59
155 查看
三、Glib的数据类型及标准宏
1、GLib数据类型
类型 描述
2、标准Glib宏
宏 描述
四、改造21点游戏
1、引入字符串类型
GString结构包含了三个成员:保存字符串当前状态的C字符串,除了结束符的字符串长度,和为字符串当前分配的内存数量。如果字符串增加到超出分配的内存长度,GString会自动为其分配更多内存。
typedef struct
{
gchar *str;
gsize len;
gsize allocated_len;
} GString;
1、GLib数据类型
麦好的AI乐园博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
类型 描述gboolean | 由于c语言没有提供布尔数据类型,所以Glib提供了gboolean,可以设置为TRUE或FALSE。 |
gchar (guchar) | 和标准C的char(unsigned char)类型一致。 |
gconstpointer | 一个指向常量的无类型指针。这种指针指向的数据不能改变。因此,它通常用于函数原型,表明这个函数不会改变该指针指向的数据。 |
gdouble | 与标准C的double类型一致。取值范围从-G_MAXDOUBLE到G_MAXDOUBEL。G_MINDOUBLE指的是gdouble可以储存的最小正数。 |
gfloat | 与标准C的float类型一致。可能的的取值范围从-G_MAXFLOAT到G_MAXFLOAT。G_MINFLOAT指的是gfloat可以储存的最小正数。 |
gint (guint) | 和标准C的int(unsigned int)类型一致。有符号的gint类型的值必须在G_MININT到G_MAXINT的范围内。guint的最大值为G_MAXUINT. |
gint8 (guint8) | 被设计为在所有平台上都为8位的有符号和无符号整型。gint8的取值范围为-128到127(G_MININT8到G_MAXINT8),guint8的取值范围为0到255(G_MAXUINT8)。 |
gint16 (guint16) | 被设计为在所有平台上都为16位的有符号和无符号整型。gint16取值范围为-32768到32767(G_MININT16到G_MAXINT16),guint16的取值范围为0到65535(G_MAXUINT16)。 |
gint32 (guint32) | 被 设计为在所有平台上都为32位的有符号和无符号整型。gint32取值范围为-2,147,483,648到 2,147,483,647(G_MININT32到G_MAXINT32),guint32的取值范围为0到 4,294,967,295(G_MAXUINT32)。 |
gint64 (guint64) | 被设计为在所有平台上都为64位的有符号和无符号整型。gint64取值范围为-2^63次方到2^63-1(G_MININT64到G_MAXINT64),guint64的取值范围为0到2^64-1(G_MAXUINT64)。 |
glong (gulong) | 和标准C的long(unsigned long)类型一致。glong的取值范围从G_MINLONG到G_MAXLONG。gulong的最大值为G_MAXULONG. |
gpointer | 一个定义为void*的无类型指针。只是为了看上去比标准的void*好看。 |
gshort(gushort) | 和标准C的short(unsigned short)类型一致。glong的取值范围从G_MINSHORT到G_MAXSHORT。gushort的最大值为G_MAXUSHORT。 |
gsize(gssize) | 无符号和有符号的32位整型。在许多数据结构中用来代表大小。gsize被定义为unsigned int,gssize被定义为signed int。 |
宏 描述
ABS(a) | 返回a的绝对值。这个宏只是简单的返回去掉符号的负数,对正数不进行任何操作。 |
CLAMP(a,low,high) | 确认a是否在low和high之间。如果a不再low和high之间,将会返回与low和high之间与a比较接近的那个。否则返回a。 |
G_DIR_SEPARATOR G_DIR_SEPARATOR_S | 在UNIX系统中,目录用斜杠(/)来分隔,在Windows系统中,用的是反斜杠(\),G_DIR_SEPARATOR以字符类型返回一个适当的分隔符,而G_DIR_SEPARATOR_S返回的是一个字符串。 |
GINT_TO_POINTER(i) GPOINTER_TO_INT(p) | 将一个gpointer转换成一个整数,或将一个整数转换成一个gpointer。整数中只有32位将会被储存。你一定要避免对占用空间超过32位的整数使用这些宏。记住你不能在整数中储存指针,这些宏仅仅是允许你以指针的形式储存整数。 |
GSIZE_TO_POINTER(s) GPOINTER_TO_SIZE(p) | 把gsize转换成gpointer或者把gpointer转换成gsize。如果想把gsize的值从指针转换回来,它事先必须已经通过GSIZE_TO_POINTER()被储存为指针,请参见GINT_TO_POINTER()。 |
GUINT_TO_POINTER(u) GPOINTER_TO_UINT(p) | 把一个无符号整数转换成gpointer,或者把gpointer转换成无符号整数。如果想把整数从指针转换回来,它事先必须已经通过GUINT_TO_POINTER()被储存为指针,请参见GINT_TOOPOINTER()。 |
G_OS_WIN32 G_OS_BEOS G_OS_UNIX | 这三个宏允许你定义只能运行在特定平台的代码。只有和用户使用的操作系统一致的那个宏会被定义,所以你可以用#ifdef G_OS_*来写只能用于用户的平台的代码。 |
G_STRUCT_MEMBER_P(struct_p, offset) | 返回一个指向在结构体内偏移量为offset的成员的无类型指针,偏移量必须在struct_p的范围之内。 |
G_STRUCT_OFFSET(type, member) | 返回一个成员在结构体内的偏移量。type指明结构体的类型。 |
MIN(a, b) MAX(a, b) | 计算两个a和b中的最小值和最大值。 |
TRUE 和 FALSE | FALSE被定义为0,TRUE为FALSE的逻辑非。这两个值被gboolean所使用。 |
1、引入字符串类型
GString结构包含了三个成员:保存字符串当前状态的C字符串,除了结束符的字符串长度,和为字符串当前分配的内存数量。如果字符串增加到超出分配的内存长度,GString会自动为其分配更多内存。
typedef struct
{
gchar *str;
gsize len;
gsize allocated_len;
} GString;
相关文章推荐
- C指针原理(72)-GLIB
- C指针原理(75)-GLIB
- C指针原理(40)-GLIB
- C指针原理(73)-GLIB
- C指针原理(50)-C语言-GLIB
- 对象回收时Weak指针自动被置为nil的实现原理
- 转:博客园父类指针指向子类对象的原理
- C/C++知识要点5——智能指针原理及自己定义实现
- C语言的指针、链表的原理和各类操作
- 父类型指针可以指向子类型的对象。但是对于子类型的指针不能指向父类型的对象(原理)
- 模板共享指针(shared_ptr)原理实现
- C指针原理(86)-helloworld的C程序汇编剖析(2)
- C 语言实现多态的原理:函数指针
- C指针原理(9)-C内嵌汇编
- 再议指针---------函数回调(qsort函数原理)
- 算法24:智能指针的原理和使用
- C指针原理(21)-C指针基础
- 智能指针的原理和简单实现
- C指针原理(3)
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析