gpt4 book ai didi

c++ - 为什么 g++ 4.9.0 默认有 std::isnan?

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:25 25 4
gpt4 key购买 nike

我的理解是函数std::isnan仅从 C++11 开始可用。此外,g++使用 -std=gnu++98除非明确告知不要这样做。

那么为什么会编译呢?

>> cat test.cpp
#include <cmath>
int main(int argc, char** argv)
{
return std::isnan(0);
}

>> g++ test.cpp

是否有一个标志可以从<cmath>中取出函数?

最佳答案

编译器开发人员懒于完全删除应该只在下一版本标准中可用的所有功能,尤其是当相关库 (C99) 同时具有这些功能时。

实用程序(验证您的代码实际上遵守特定标准)还不足以让编译器编写者非常努力地让他们的编译器提供该服务。

相反,通常会发生的是在特定标准标志下实现新功能。有时他们会被意外地向后移植。当标准最终确定时,部分实现会存在一段时间,直到它变得足够好为止。

然后开始制定下一版本的标准。下一个版本标志会为您提供不太稳定的开发环境,因为新功能会被尝试、丢弃和更改。

它在不向后移植方面付出了一些努力,但它并不是一个阻碍。

关于c++ - 为什么 g++ 4.9.0 默认有 std::isnan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464707/

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