报错cast from pointer to integer of different size

求助各位大佬:

unsigned int SET_PTR(char p, void *ptr){
return (
(unsigned int *)(p) = (unsigned int)(ptr));
}

这段代码为什么报错:cast from pointer to integer of different size [-Werror=pointer-to-int-cast]

应该怎么改?

这是提示你强制转换的类型的指针对应的长度不同。这是警告,如果你确认你就是要这么做,那就这么写。char对应的是一个字节,而unsigned int是4个字节。如果你不希望这么做,需要修改其中一个的类型。

返回指针

unsigned int SET_PTR(char p,void *ptr)
{
return ((unsigned int *)(p) = (unsigned int *)(ptr));
}

返回无符号整数

unsigned int SET_PTR(char p,void *ptr)
{
return ((unsigned int)(p) = (unsigned int)(ptr));
}