【发布时间】:2016-06-19 07:02:14
【问题描述】:
我需要在 .cpp (c++) 源文件中使用自然对数函数。现在,我当然可以通过快速的谷歌搜索和简单的库解决方案来做到这一点。但是我有点迷茫……
在cplusplus dot com网站的reference/cmath/log/下有一个如何使用日志功能的例子,如下
/* log example */
#include <stdio.h> /* printf */
#include <math.h> /* log */
int main ()
{
double param, result;
param = 5.5;
result = log (param);
printf ("log(%f) = %f\n", param, result );
return 0;
}
我有一些问题:
1) 他们为什么使用
<stdio.h>
我以为这是针对 C 而不是真的针对 C++?
2) 他们为什么使用
<math.h>
虽然 .h 代表 C 头文件而不是 .hpp C++ 头文件?
忘记使用 stdio(无论如何我都会使用 iostream),但即便如此使用
<math.h>
感觉就像我在编写 C 代码而不是 C++ 代码。我通过一门教学课程学习 C++,讲师在第一周介绍了 C,然后说我们不会再使用 C,但从现在开始会使用 C++。如果老师问“你为什么使用 C 头文件?你应该是用 C++ 工作的”,我觉得我无法解释自己。
任何解释都非常感谢。
【问题讨论】:
-
对于 C++,使用
<cmath>而不是<math.h>。 -
该名称的标头在 C 和 C++ 标准库中都可用,并且通常是同一个文件。
-
@Paul blimey 你的回复很快。我看到了,但是,在另一个 cmath vs math.h stackoverflow 问题中,提供的答案指出“它可以用一个编译器编译,但不能用另一个编译器编译。因此使用 [math.h] 是个好主意”。这让我更加困惑。
-
但为什么是 .h 而不是 .hpp
-
大多数带有 .h 后缀的标准 C 库头文件都有一个 C++ 等效项,它负责 std 命名空间,添加 c 前缀并删除 .h 后缀。