linux 编译error: loses precision [-fpermissive]

这是因为Linux 64位系统上指针类型占用8个字节,而int类型占用4个字节,所以会出现loses precision(转换精度丢失)。

可以先将int* 转成long类型,long类型可以隐式类型转换到int类型,如下:

int func() {
    int *p;
    p = //赋值
    return (long)p;
}

这样就不会报编译错误了。

原文地址:https://www.cnblogs.com/hanrp/p/11125273.html