在GCC built-ins description中,它说:
GCC 提供了 ISO C99 浮点比较宏的内置版本,可避免引发无序操作数的异常。它们与标准宏具有相同的名称(isgreater、isgreaterequal、isless、islessequal、islessgreater 和 isunordered),并带有 _内置前缀。我们打算让库实现者能够简单地将每个标准宏#define 为其内置等效项。以同样的方式,GCC 提供了 fpclassify、isfinite、isinf_sign、isnormal 和 signbit 内置函数,并以 _为前缀。isinf 和 isnan 内置函数出现时带有和不带有 _内置前缀。
所以,我不太能够解析这个。浮点比较何时应该引发异常?C标准是否要求他们这样做?强制他们不要?什么都不强制?并且 - 与 的__builtin_isnan()
行为不同isnan()
吗?