c++ - 为什么 mingw 知道 round() 但 visual studio 编译器不知道

标签 c++ visual-c++

有效的示例代码,由 gcc 编译但不由 VS 编译器编译:

#include <cmath>

int main()
{
    float x = 1233.23;
    x = round (x * 10) / 10;
    return 0;
}

但出于某种原因,当我在 Visual Studio 中编译时出现错误:

C3861: 'round': identifier not found

我什至包括了 cmath 正如这里有人建议的那样:http://www.daniweb.com/software-development/cpp/threads/270269/boss_loken.cpp147-error-c3861-round-identifier-not-found

只有gcc有这个功能吗?

最佳答案

首先,cmath不保证带round进入全局命名空间,因此您的代码可能会失败,即使使用最新的、符合标准的 C 或 C++ 实现也是如此。可以肯定的是,使用 std::round (或 #include <math.h> 。)

请注意,您的 C++ 编译器必须支持 C++11对于 std::round (<cmath>)。 C 编译器应该支持 C99对于 round (来自 <math.h>。)如果您的 MSVC 版本在我建议的修复后无法正常工作,可能只是因为该特定版本是 C++11 之前的版本,或者根本不符合标准。

关于c++ - 为什么 mingw 知道 round() 但 visual studio 编译器不知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306032/

相关文章:

C++ 重写一个文件,但在一个词之前遗漏了所有内容

c++ - 使用 3d 对象为图形正确设置坐标

c++ - 时间偏移计算偏差一分钟

c++ - 表达式树实现问题

c++ - 使用虚拟析构函数会使非虚拟函数进行 v 表查找吗?

linux - 如何在使用 Windows header 的 Linux 上构建 Visual C++ 应用程序?

c++ - 与所有其他编译器一起使用的MSVC错误C2280(试图引用已删除的功能)

c++ - C++14 是否定义了 'auto' 类型的函数参数?

c++ - 来自 Boost.Atomic 示例的无等待队列崩溃

c++ - Windows 关键部分奇怪的行为