如何使用 LLVM 获取/计算 FLT_MAX 和 FLT_EPSILON 等值?

问题描述

如果我的代码正在为一个可能与其当前运行的平台不同的平台生成 LLVM SSA,我如何获得 FLT_MAXFLT_EPSILON 之类的值(或双打相同的值) ,或任何其他浮点宽度)?

我猜一般来说,为我自己的系统获取这些值并使用它们是不正确的。将问题委托给 clanggcc 也是不可接受的解决方案。

在生成 LLVM 代码时,我如何知道要为 FLT_MAX 发出什么值?

解决方法

FLT_MAX / FLT_EPSILON 是 C/C++ 特有的实体,与 LLVM 无关。因此,您需要求助于 C/C++ 编译器才能得出它。或者,您需要保留支持平台的列表,并为每个支持的平台硬编码这些值。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...