C指针原理(74)-GLIB
来源:互联网 发布:咸鱼淘宝介入有赢的吗 编辑:程序博客网 时间:2024/06/03 14:37
三、Glib的数据类型及标准宏
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。
2、标准Glib宏
宏 描述
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所使用。
四、改造21点游戏
1、引入字符串类型
GString结构包含了三个成员:保存字符串当前状态的C字符串,除了结束符的字符串长度,和为字符串当前分配的内存数量。如果字符串增加到超出分配的内存长度,GString会自动为其分配更多内存。
typedef struct
{
gchar *str;
gsize len;
gsize allocated_len;
} GString;
- C指针原理(74)-GLIB
- C指针原理(40)-GLIB
- C指针原理(72)-GLIB
- C指针原理(73)-GLIB
- C指针原理(75)-GLIB
- C指针原理(50)-C语言-GLIB
- C指针原理(33)-C指针基础
- C指针原理(18)-C指针基础
- C指针原理(19)-C指针基础
- C指针原理(20)-C指针基础
- C指针原理(21)-C指针基础
- C指针原理(22)-C指针基础
- C指针原理(23)-C指针基础
- C指针原理 (25)-C指针基础
- C指针原理 (26)-C指针基础
- C指针原理(24)-const类型
- C指针原理(38)-gtk
- C指针原理(1)
- JQuery实现图片轮播效果
- ffmpeg命令使用例子收集
- C/C++ 开发库 | C/C++ Development Library
- 心得
- mfc 添加窗体动态效果
- C指针原理(74)-GLIB
- 几个数学常数
- spring mvc中的拦截器小结
- Sybase数据库组成和特点
- JAVA Swing自定义JScorllPanel
- 【iphone游戏开发】iphone-Cocos2D游戏开发之二:精灵表的详细讲解(一)和Zwoptex工具的使用
- Cocos2d-x C++版仿《王者之剑》实现(v1.0.1版)
- StringBuilder和StringBuffer的区别
- 接口与抽象类的区别