我在 Linux 上有一个 C++ 项目,其中包含了库路径:
/opt/intel/include/
这样我就可以使用某些英特尔库。但是,我也希望使用标准的 C/C++ math.h,这样我就可以调用 pow(x,y)
;
我包括了 <math.h>
并使用 using namespace::std
然后使用 pow(x,y)
调用电话.编译器 (gcc4.7) 提示:
/opt/intel/include/math.h:27:3: error: #error "This Intel is for use with only the Intel compilers!"
如何指定我指的是 C/C++ math.h pow()
而不是英特尔 pow()
?
最佳答案
这就是 C++ 为这类事情使用 namespace 并且还使用不太可能与其他库冲突的更具体的 header 名称的原因。
如果你#include <cmath>
(你应该在 C++ 软件中,而不是 <math.h>
)你可以通过使用 std::pow (...)
来区分标准库的实现和英特尔的实现。 .这是不申请using namespace std;
的另一个原因无论如何,它可能会使代码看起来更清晰,但由于 stdlib 中使用的函数名称非常通用,因此它们经常与其他库发生冲突。
关于c++ - 英特尔 <math.h> vs C <math.h>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19747942/