如何检查C ++编译器是否使用IEEE 754浮点标准
我想问一个这样的问题,如果编译器使用这个标准,定义检查会很好地回答这个问题。 然而,这只为C炒作。 有没有办法在C ++中做同样的事情?
我不希望将浮点types转换为文本或使用一些非常复杂的转换函数。 我只需要编译器检查。 如果您知道这些兼容编译器的列表,请发布链接。 我无法find它。
其实你有一个更简单的方法来实现这个在C + +。 从C ++标准18.2.1.1
, std
存在类numeric_limits
。 为了访问所说的静态成员,你只需要这样做:
std::numeric_limits<double>::is_iec559;
要么:
std::numeric_limits<float>::is_iec559;
如果使用IEEE 754,则返回true
,否则返回false。
作为另一种方法, 亚当答案的第二部分也应该为C ++做。