C编译报错:error: cast from pointer to integer of different size [-Werror=point

无烟无酒亦无妞 2014-12-29 02:31:34

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]*/
};

...全文
1808 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-12-29
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。 在宏MAKE_KEY_INFO中,企图将指针类型转换为无符号32位整型数,但这在64位环境下会发生兼容性问题。

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧