下面这个宏是求结构体中某成员的偏移量
#if defined(__GNUC__) && __GNUC__ >= 4
#define G_STRUCT_OFFSET(struct_type, member) \((glong) offsetof (struct_type, member)) //使用库函数
#else
#define G_STRUCT_OFFSET(struct_type, member) \
((glong) ((guint8*) &((struct_type*) 0)->member)) //在0地址转为struct_type类型,再取member成员地址,妙啊
#endif
使用方法如下:
int offset = G_STRUCT_OFFSET(struct s, d))
下面的和上面宏差不多,不解释了
#define G_STRUCT_MEMBER_P(struct_p, struct_offset) \
((gpointer) ((guint8*) (struct_p) + (glong