make 报错:error: cast from ‘int32_t*’ {aka ‘int*’} to ‘int’ loses precision [-fpermissive]

错误提示:

     xxx.h:117:59: error: cast from ‘int32_t*’ {aka ‘int*’} to ‘int’ loses precision [-fpermissive]
     int m_MinValidLen = (int)(&(((DataOnAir *)0)->rx_ts_s));

报错原因:

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

可以先将int* 转成long类型,long类型可以隐式类型转换到int类型。直接修改为long long或者long即可

修改:

long m_MinValidLen = (long)(&(((DataOnAir *)0)->rx_ts_s));

posted @ 2022-09-13 17:10  gǒが油メo  阅读(608)  评论(0)    收藏  举报