相关疑难解决方法(0)

使用abs()避免编译器问题

使用不带有g ++ 4.6.1 doublestd::abs()函数变体时std,不会给出警告或错误.

#include <algorithm>
#include <cmath>

double foobar(double a)
{
     return abs(a);
}
Run Code Online (Sandbox Code Playgroud)

这个版本的g ++似乎是通过其中一个包含来引入全局命名空间的double变体.这似乎现在标准允许(参见此问题),但不是必需的.abs()algorithm

如果我使用不将double变量abs()引入全局命名空间的编译器(例如g ++ 4.2)编译上述代码,则会报告以下错误:

warning: passing 'double' for argument 1 to 'int abs(int)'
Run Code Online (Sandbox Code Playgroud)

我如何强制g ++ 4.6.1和其他将函数拉入全局命名空间的编译器发出警告,以便在与其他编译器一起使用时可以防止错误?

c++

13
推荐指数
1
解决办法
3541
查看次数

标签 统计

c++ ×1