'round' is not a member of 'std'
我正在尝试编译以下代码:
1 2 3 4 | #include <cmath> double gravity (double level) { return 0.02 * std::round(level); } |
但是海湾合作委员会告诉我:
1 | error: 'round' is not a member of 'std' |
我知道我以前在ISO C ++ 98中多次使用
是什么赋予了?
更新:我正在使用
切换到
但是,如果
我做了一些研究,发现的是:
这就是为什么它不在C ++ 98的命名空间
但是
GNU_SOURCE is defined by G++ and ... it implies _USE_ISOC99
(摘自http://gcc.gnu.org/ml/gcc/2002-09/msg00580.html)
这就是
这显然是GCC中的一个错误:为什么GCC即使在具有ansi和pedantic标志的情况下也允许在C ++中使用round()?
其他C ++编译器可能不提供
怎么样
1 2 3 4 | float myRoundFunc(float toRound) { return std::ceil(toRound - 0.5); } |
这样就没有比较,它将正确地四舍五入。
旧主题,但可能对在Google中搜索的主题有用:
1 2 3 4 | //TODO: C++11 got round() function defined in math.h float distance = sqrt((float)(plus_x * plus_x + plus_y * plus_y)); if (distance >= floor(distance)+0.5) distance = ceil(distance); else distance = floor(distance); |
在C ++ 03标准中,标准C库的标准引用为ISO / IEC 9899:1990(C90),其中不包含
每个C ++标准中
The contents of these headers [
and ] are the same as the Standard C library headers and respectively [...]
但是,它们在
In the C++ standard library, however, the declarations (except for names which are defined as macros in C) are within namespace scope (3.3.6) of the namespace std.
因此,总结起来,