Glib2中G_DEFINE_TYPE原理(四)
原理 type define
2023-09-14 09:16:09 时间
一、Glib2源码定义G_DEFINE_TYPE实现
1.Glib2源码G_DEFINE_TYPE定义
#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
#define G_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) \
\
static void type_name##_init (TypeName *self); \
static void type_name##_class_init (TypeName##Class *klass); \
static gpointer type_name##_parent_class = NULL; \
static void type_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) \
{ \
static volatile gsize g_define_type_id__volatile = 0; \
if (g_once_init_enter (&g_de
相关文章
- 微服务浅谈与原理
- 详解React核心工作原理
- XXL-JOB核心源码解读及时间轮原理剖析
- 高可用 - 03 Keepalived_ Keepalived工作原理&体系结构
- 非对称加密--RSA原理浅析
- 【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
- ORA-24025: invalid value string, QUEUE_PAYLOAD_TYPE should be RAW or an object type ORACLE 报错 故障修复 远程处理
- Linux下使用Type命令掌握文件说明(linux中 type)
- 解析Redis跳表背后的原理(redis 跳表原理)
- 浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)