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

Qt编译报错

cast from ‘QTJSC::JSCell*’ to ‘int32_t’ {aka ‘int’} loses precision [-fpermissive] u.asBits.payload = reinterpret_cast(ptr);

网上搜了一下,大概的原因是QTJSC::JSCell*转成int32_t会丢失精度,64位Linux机器上的指针占8个字节,而int占4个字节,所以会报这个错

提示报错的位置

qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h 

u.asBits.payload = reinterpret_cast(ptr);
u.asBits.payload = reinterpret_cast(const_cast(ptr));

把int32_t改为int64_t就可以了

同样的Qt版本,编译龙芯5000的时候报的这个错,之前其他架构也是64位的系统,都没出现的,真是奇怪哎

你可能感兴趣的:(填坑,qt)