C ++数学函数问题(在Linux下)

时间:2009-06-04 14:25:42

标签: c++ linux math

我遇到有关max和sqrt

的问题

如果我包含math.h,则无法找到sqrt。

所以我查看了cmath头文件,里面包含了math.h,但是当我尝试打开math.h时,它说找不到该文件。因此,Linux中缺少我的math.h。

4 个答案:

答案 0 :(得分:5)

抱歉,我找到了答案。

我只需要这样写:

的std ::最大 的std :: SQRT

但是为什么Windows操作系统下没有“std ::”会有效?

答案 1 :(得分:4)

NB: 在C ++中你应该#include< cmath>不是#include< math.h>

NB: 同时指定命名空间是一种很好的做法

答案 2 :(得分:3)

你之前不需要使用std ::的原因可能是因为在头文件中的某处写了以下语句:

using namespace std;

在此声明之后,不再需要'std ::'前缀。

希望这澄清事情......

答案 3 :(得分:1)

您的系统可能在文件系统中的一个位置具有C标头,而在另一个位置具有C ++标头。您是否熟悉搜索系统头的实际目录列表? (实际上,实现不需要有系统头文件,尽管我熟悉的都是.C ++标准对#include <cmath>语句必须做什么有要求,但对于它如何做完成。)

在你的回答中,你谈到了Linux和Windows上的C ++之间的差异。这些不是特定于操作系统的,而是特定于实现的。您可能在Windows上使用Visual C ++,在Linux上使用其他东西(如果仅因为VC ++仅在Windows上运行)。它们在默认配置中的工作方式可能不同。

实际上,#include <math.h>应该像#include <cmath>,除了math.h应该将其所有的函数名称移动到std :: namespace中。如果您的Linux C ++系统中没有发生这种情况,则会出现问题。不幸的是,你没有提供足够的信息来弄清楚发生了什么。