c语言的常用控件对象,使用C语言进行面向对象的开发--GObject入门[4]

#defineG_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})#defineG_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)      _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()#define_G_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \\staticvoidtype_name##_init              (TypeName*self); \staticvoidtype_name##_class_init        (TypeName##Class*klass); \staticgpointer type_name##_parent_class=NULL; \staticvoidtype_name##_class_intern_init (gpointer klass) \

{ \

type_name##_parent_class=g_type_class_peek_parent (klass); \

type_name##_class_init ((TypeName##Class*) klass); \

} \

\

gulong\

type_name##_get_type (void) \

{ \staticvolatilegsize g_define_type_id__volatile=0; \if(g_once_init_enter (&g_define_type_id__volatile))  \

{ \

gulongg_define_type_id=\

g_type_register_static_simple (TYPE_PARENT, \

g_intern_static_string (#TypeName), \sizeof(TypeName##Class), \

(GClassInitFunc) type_name##_class_intern_init, \sizeof(TypeName), \

(GInstanceInitFunc) type_name##_init, \

(GTypeFlags) flags); \

{/*custom code follows*/#define_G_DEFINE_TYPE_EXTENDED_END()   \/*following custom code*/\

}                 \

g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \

}                   \returng_define_type_id__volatile;    \

}/*closes type_name##_get_type()*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值