gpt4 book ai didi

c++ - 为什么 C++ 标准没有提到 __STDC_IEC_559__?

转载 作者:可可西里 更新时间:2023-11-01 16:17:55 25 4
gpt4 key购买 nike

根据 C++11 标准 [c.math],<cmath> header 与标准 C 库 header 相同 <math.h> .
(当然,有几个区别,---命名空间,重载等---但这些在这里可以忽略。)
根据 C99 标准附件 F,“定义 __STDC_IEC_559__ 的实现应符合附件 F 中的规范”。

例。 atan2如果两个参数都为零,可能会导致域错误,但如果 __STDC_IEC_559__ 则一定不会已定义。

在 C99 中,很多行为也依赖于是否 __STDC_IEC_559__是否定义。

但是,似乎__STDC_IEC_559__在 C++11 标准的任何地方都没有提到。
如果是,C++ 实现是否符合附件 F 中的规范?

我认为 std::numeric_limits<T>::is_iec559()是替代品,但似乎只提到了类型。

最佳答案

C++ 标准 (n3797) 通过引用包含 C 标准库,请参阅 s1.2/2。

The library described in Clause 7 of ISO/IEC 9899:1999 and Clause 7 of ISO/IEC 9899:1999/Cor.1:2001 and Clause 7 of ISO/IEC 9899:1999/Cor.2:2003 is hereinafter called the C standard library.

With the qualifications noted in Clauses 18 through 30 and in C.4, the C standard library is a subset of the C++ standard library.

该标准未提及该符号,我不希望它被定义,因为它似乎特定于标准 C。通过不定义该符号,C++ 不受附件 F 内容的约束。

相反,C++ 标准以更类似于 C++ 的形式多次提及 IEC 559。例如,

Shall be true for all specializations in which is_iec559 != false

18.3.2.4/56中有具体提到

static constexpr bool is_iec559;

True if and only if the type adheres to IEC 559 standard.218

Meaningful for all floating point types.

我认为可以公平地说 C++ 包含所有相同的功能(或缺少它们),但适应了 C++ 世界。

关于c++ - 为什么 C++ 标准没有提到 __STDC_IEC_559__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23802294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com