我正在尝试在MingW-w64上编译OpenEXR库。我收到以下编译错误,因为gcc抱怨截断:
ImfOptimizedPixelReading.h:73:50: error: cast from 'const void* __restrict__'
to 'long unsigned int' loses precision [-fpermissive]
unsigned long trailingBits = ((unsigned long)pPointer) & 15;
^
我可以在我自己的工具链上轻松解决这个问题,例如通过转换为uintptr_t
而不是unsigned long
,但我无法推送此补丁,因为它只是c ++ 11,因此会破坏兼容性与其他编译器。
此函数仅检查尾随位是否全为零并返回true / false
在保持至少c ++ 98兼容的同时,最便携的方法是什么?我已经测试了static_cast<unsigned long>
,但我得到了另一个错误。