如何解决64位无符号int到float转换的未定义参考错误
“未定义对__aeabi_ul2d的引用”
我认为类似的get_float32()
不会出现这种问题。 get_float64()
函数在这里可能有什么问题?
fvalue = static_cast<double>(value); //Showing up error while compiling for GCC..
float get_float32()
{
float fvalue(0.0f);
uInt32 value = retrieve_uInt32();//Return 32bit Unsigned int value
fvalue = static_cast<Float32>(value); //No error here for float32
return fvalue;
}
double get_float64()
{
double fvalue = static_cast<double>(0.0f);
uInt64 value = retrieve_uInt64(); //Return 64bit Unsigned int value
fvalue = static_cast<double>(value); //Showing up error while compiling for GCC.. undefined reference to `__aeabi_ul2d
return fvalue;
}
我不想在这里使用reinterpret_cast
,这会引发-Wstrict-aliasing
的错误。使用下面的代码使用-O2
选项发出警告
warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
fvalue = *reinterpret_cast<Float64*>(&value);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。