如何检查C ++编译器是否使用IEEE 754浮点标准

问题描述 投票:28回答:2

[我想问一个在this one之后的问题,如果编译器使用标准,则定义检查会很好地回答这个问题。但是,这仅适用于C。有没有办法在C ++中做同样的事情?

我不希望将浮点类型转换为文本或使用一些非常复杂的转换函数。我只需要编译器检查。如果您知道此类兼容编译器的列表,请发布链接。我找不到它。

c++ compiler-construction floating-point ieee-754
2个回答
29
投票

实际上,您有一种更简单的方法可以用C ++实现。根据C ++标准18.2.1.1numeric_limits中存在类std。为了访问所述静态成员,您只需执行以下操作:

std::numeric_limits<double>::is_iec559;

或:

std::numeric_limits<float>::is_iec559;

如果正在使用IEEE 754,应返回true,否则返回false。

作为一种替代方法,对于C ++,Adam's answer的第二部分也应这样做。


0
投票

尽管此帖子有些陈旧(10年),但是您仍然可以尝试使用此方法。它也可以在C中使用:

#ifndef __STDC_IEC_559__
#error The following Programm only supports float operations using the IEEE 754 Standard
#endif
© www.soinside.com 2019 - 2024. All rights reserved.