首页 > 代码库 > 这样的类型转换,你用过吗
这样的类型转换,你用过吗
最近在做64位代码移植,代码中到处充斥着类型转换,到处报编译警告和错误,比如以下使用:
unsigned int ret=0,*p=NULL;
p = (unsigned int *)malloc(sizeof(4));
ret = (unsigned int )p;
以上这段代码,在32位编译系统中没问题,但是在64位编译系统中就会报错,说是类型转换size不一样,因为在64位,所有指针类型全是8个字节,而unsigned int 是4个字节;此时我们可以做如下适配:
ret = (uintptr_t)p;
之所以可以这样做,是因为Linux内核在定义这个类型时已经做了64位和32位区分。
这样的类型转换,你用过吗
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。