我遇到有关max和sqrt
的问题如果我包含math.h,则无法找到sqrt。
所以我查看了cmath头文件,里面包含了math.h,但是当我尝试打开math.h时,它说找不到该文件。因此,Linux中缺少我的math.h。
答案 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 ++系统中没有发生这种情况,则会出现问题。不幸的是,你没有提供足够的信息来弄清楚发生了什么。