gpt4 book ai didi

c++ - 为什么 GCC 允许在 C++ 中使用 round() 即使带有 ansi 和 pedantic 标志?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:58 25 4
gpt4 key购买 nike

即使使用 -ansi-pedantic 标志,这个程序在 GCC 下编译是否有充分的理由?

#include <cmath>

int main (int argc, char *argv [])
{
double x = 0.5;

return static_cast<int>(round(x));
}

使用 g++ -ansi -pedantic -Wall test.cpp -o test 编译干净(甚至没有警告)。

我看到两个问题:

  1. round() 不应该在符合 ISO 的模式下对 C++ 可用(因为它来自 C99)
  2. 即使 round() 在这种情况下可用,它也只能在 std 命名空间中可用

我错了吗?

最佳答案

This is a bug .它已经存在了很长时间了。显然,没有足够的集体愿望来修复它。随着新版本的 C++ 即将推出,它将采用 math.h 中的 C99 函数,它似乎不太可能得到修复。

关于c++ - 为什么 GCC 允许在 C++ 中使用 round() 即使带有 ansi 和 pedantic 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882689/

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