69,374
社区成员
发帖
与我相关
我的任务
分享
typedef struct key_info_s{
size_t csize; ///< 本结构体大小
key_type_e type; ///< 成员类型
const char *key; ///< 成员名称
int offset; ///< 成员偏移地址
size_t ksize; ///< 成员大小
struct key_info_s *sub_key; ///< 对于#KEY_TYPE_OBJECT类型,其具体类型定义
int arraycnt; ///< 对于#KEY_TYPE_ARRAY类型,其个数
key_type_e arraytype; ///< 对于#KEY_TYPE_ARRAY类型,其成员的类型
}key_info_t;
/*成员在结构体中的偏移地址*/
#define NAME_OFFSET(type,name) ((int)(&(((type *)0)->name)))
//#define NAME_OFFSET(type,name) ((int)(*(int *)(&(((type *)0)->name))))
#define NAME_SIZE(type,name) (sizeof((((type *)0)->name)))
static key_info_t rect_key[] = {
MAKE_KEY_INFO(RECT, KEY_TYPE_U32, x, NULL), /*编译报错:error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]*/
MAKE_KEY_INFO(RECT, KEY_TYPE_U32, y, NULL), /*编译报错:error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]*/
MAKE_KEY_INFO(RECT, KEY_TYPE_U32, w, NULL),/*编译报错:error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]*/
MAKE_KEY_INFO(RECT, KEY_TYPE_U32, h, NULL)/*编译报错:error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]*/
};