[英]C++ math functions problem (under Linux)
我在最大和平方数方面遇到问题
如果我包含math.h,则找不到sqrt。
因此,我查看了cmath头文件,并且其中包含math.h,但是当我尝试打开math.h时,该文件未找到。 所以我想我的math.h在Linux中不见了。
对不起,我找到了答案。
我只需要这样写:
std :: max std :: sqrt
但是,为什么在Windows操作系统中不带“ std ::”就可以工作?
注意:在C ++中,您应该#include <cmath>而不是#include <math.h>
注意:还指定名称空间是一个好习惯
您以前不需要使用std ::的原因可能是因为在头文件中的某处写入了以下语句:
using namespace std;
在此语句之后,不再需要'std ::'前缀。
希望这可以澄清事情...
您的系统可能在文件系统的一个位置有C头,而在另一位置有C ++头。 您是否熟悉搜索系统标题的目录的实际列表? (实际上,尽管我熟悉的所有实现都不需要实现具有系统头文件。C++标准对语句#include <cmath>
必须执行的操作有要求,但对必须执行的操作没有要求。完成。)
在回答中,您将讨论Linux和Windows上C ++之间的差异。 这些不是特定于操作系统的,而是特定于实现的。 您可能在Windows上使用Visual C ++,而在Linux上使用其他东西(如果仅是因为VC ++仅在Windows上运行)。 它们在默认配置下可能会有所不同。
实际上, #include <math.h>
应该类似于#include <cmath>
,只是math.h应该将其所有函数名称等移入std ::名称空间。 如果您的Linux C ++系统中没有发生这种情况,那就有问题。 不幸的是,您没有提供足够的信息来了解正在发生的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.