2_04_GLib库入门与实践_类型转换宏

类型转换宏提供了整型与指针类型的互相转换功能,非常方便,也经常会用到。

类型转换宏说明

#define 	GINT_TO_POINTER()  // 整型转换为指针
#define 	GPOINTER_TO_INT()  // 指针转换为整型
#define 	GUINT_TO_POINTER() // 无符号整型转换为指针
#define 	GPOINTER_TO_UINT() // 指针转换为无符号整型
#define 	GSIZE_TO_POINTER() // gsize类型转换为指针
#define 	GPOINTER_TO_SIZE() // 指针转换为gsize类型

类型转换宏用法

GLib库很多函数的用户数据类型都是pointer类型,这样做的目的是为了让用户方便地扩展自己定义的数据类型,但如果我们只需传递一个整数(这种情况还挺多),则只需要一个GINT_TO_POINTER宏将整数转换成指针就可以了。
例如,异步队列入队列函数的定义为:
void g_async_queue_push (GAsyncQueue *queue, gpointer data)
第二个参数为gpointer类型,在使用时只需要这样传入整数:

g_async_queue_push(queue, GINT_TO_POINTER (1));

异步队列出队列函数的定义为:
gpointer g_async_queue_pop (GAsyncQueue *queue)
返回值是一个gpointer类型,可以这样将刚才传入的值取出来:

gint value = 0;
gpointer item = NULL;
item = g_async_queue_pop (q);
value = GPOINTER_TO_INT (item)

对于guint和gsize,用法和gint一样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值