C++之头文件的变化

C中的头文件

在C语言中,当用到标准输入输出时(实际上大多数情况都需要用到),需要包含头文件<stdio.h>;当用到字符数组相关操作时,需要包含头文件<string.h>;当需要用到数学函数相关操作时,需要包含头文件<math.h>等等。例如:

#include <stdio.h>
int main(void){
	printf("Hello World!");
	return 0;
}

在上面的例子中,为了使用printf(),需要包含<stdio.h>头文件。这个文件的主要内容是有关标准输入输出的宏定义结构体定义函数定义等。如果有兴趣可以打开<stdio.h>查看具体内容。

#include <stdio.h>的作用是将<stdio.h>文件中的内容全部插入到当前文件中,于是我们就可以使用<stdio.h>所定义的相关内容了。

注意:将<stdio.h>中内容插入到该文件中这一操作在预处理时进行。有关C语言编译过程的描述可移步C语言编译过程

C++中的头文件

在C++程序中,为了兼容性,我们也可以使用<stdio.h>。但这并不是C++的推荐写法,C++中推荐的头文件是<cstdio>,<cstdio>是将stdio.h的内容用C++头文件的形式表示。类似的,<string.h>也应改写为<cstring>,<math.h>改写为<cmath>,如下例:

#include <cstdio>
int main() {
	printf("Hello world!");
	return 0;
}

因此,如果需要在C++程序中继续使用C语言的一些函数,更推荐的方法应该是在以前的头文件前加上c,而不是继续使用之前的.h文件。

当然,C++也有其特有的头文件,如提供输入输出流的<iostream>、提供一些常用算法的<algorithm>、提供数值操作的<numeric>等。C++为了与C语言中的头文件进行区分,在使用它们的时候都没有尾部.h后缀。如下例:

#include <iostream>
using namespace std;
int main() {
	cout << "Hello, World!" << endl;
	return 0;
}

程序中使用了<iostream>中的标识符cout和endl,因此需要包含<iostream>头文件。
另外,C++标准库中的所有的标识符都定义在std命名空间中,因此需要通过using namespace std来声明命名空间std。关于命名空间的介绍可移步C++之命名空间

总结
(1) C++与C语言中头文件形式的区别在于,C语言中头文件有.h后缀,而C++没有。
(2) C++仍然兼容C语言中的头文件,虽然这不是推荐的方式。
(3) C++提供C语言中头文件的C++表现形式,如<cstdio>对应<stdio.h>。
(4) C++提供很多C语言中没有的头文件,如<algorithm>、<numeric>等。(更多详细信息可移步C++之标准函数库

猜你喜欢

转载自blog.csdn.net/weixin_43374723/article/details/83933114