新闻  |   论坛  |   博客  |   在线研讨会
warning: cast from ‘void*’ to ‘int’ loses precision [-fpermissive] 错误分析
电子禅石 | 2021-12-02 10:44:48    阅读:5924   发布文章

warning: cast from ‘void*’ to ‘int’ loses precision [-fpermissive] 错误分析


这种错误一般产生在linux 64位机上


因为linux64 上的int为 4个字节


指针为 8个字节


int num = 100;

//此时不会产生错误,但会产生警告,因为4字节的转换为8字节

void* p = (void*) num;

 

 

//此时就会产生错误,因为8字节的指针被强转为4字节的int,数据丢失了

num = (int)p;

 

//解决办法,把int 改为long

long num = 100;

 

void* p = (void*) num;

 

num = (long)p;

————————————————


解决error: cast from ‘int*’ to ‘int’ loses precision [-fpermissive]

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

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

版权声明:本文为CSDN博主「虚渊玄」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_17019203/article/details/100038848


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客