最近在做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位区分。
时间: 2024-10-27 05:22:01