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

Posted

技术标签:

【中文标题】C++数学函数题(Linux下)【英文标题】:C++ math functions problem (under Linux) 【发布时间】:2009-06-04 14:25:42 【问题描述】:

我遇到了关于 max 和 sqrt 的问题

如果我包含 math.h,它将找不到 sqrt。

所以我查看了 cmath 头文件,其中包含 math.h,但是当我尝试打开 math.h 时,它说找不到该文件。所以我认为我的 math.h 在 Linux 中丢失了。

【问题讨论】:

在 linux 中,您几乎总能在 /usr/include/math.h 中找到它。你确定它不在那里吗?它作为 glibc 或 glibc-headers 包的一部分安装在许多发行版上。 【参考方案1】:

抱歉,我找到了答案。

我只需要这样写:

标准::最大值 std::sqrt

但是为什么在 Windows 操作系统下没有“std::”它可以工作?

【讨论】:

这取决于你的编译器。有些没有正确地将 C 标准库中的函数放入 std 命名空间。 我认为 windows.h 头文件将 min 和 max 定义为宏。可以通过在包含所述文件之前定义 NOMINMAX 来禁用它们。【参考方案2】:

注意: 在 C++ 中,你应该 #include 而不是 #include

注意: 指定命名空间也是一个好习惯

【讨论】:

我认为最好说明为什么sombody必须做某事,而不是仅仅命令它【参考方案3】:

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

using namespace std;

在此语句之后,'std::' 前缀不再是必需的。

希望这能澄清一些事情......

【讨论】:

【参考方案4】:

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

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

事实上,#include <math.h> 应该类似于#include <cmath>,除了 math.h 应该将其所有函数名称等移动到 std:: 命名空间中。如果这在您的 Linux C++ 系统中没有发生,那么就有问题了。不幸的是,您没有提供足够的信息来弄清楚发生了什么。

【讨论】:

以上是关于C++数学函数题(Linux下)的主要内容,如果未能解决你的问题,请参考以下文章

好题收集 奇怪的函数(数学)

红帽linux中C语言编程如何调用数学函数

C++调用matlab数学函数问题

高等数学函数绘图题y=x^2-1/x

小白学习C++ 教程十九C++ 中的<cmath> 数学函数和 <random>随机数

将数学函数从 Python 转换为 C++