C/C++的“文件包含”处理探究

所谓“文件包含”处理是指一个源文件可以将另一个源文件的全部内容包含进来,即将另外的文件的内容包含到本文件之中。
C/C++提供了#include命令来实现“文件包含”的操作。

C/C++在编译时并不是对两个文件分别进行编译,而是在编译预处理阶段把被包含文件的内容也加到主文件中,得到一个新的源程序,然后对这个新的源程序进行编译。

常用在主文件头部的被包含的文件通常称为头文件,常以后缀“.h”或“.hpp”结尾。当然用后缀“.c”或“.cpp”甚至没有后缀也是可以的。

本博文就“文件包含”操作进行一些探究。

01-文件包含操作可否在主文件的任意地方进行?

答案是可以的,只是我们通常不这样操作而已。
示例如下:
文件main.cpp的内容如下:

# include<iostream>
using namespace std;

int main()
{
    
    
	int k = 777;

	# include"header1.h"
	
	return 0;
}

在这里插入图片描述
把打印输出语句写在文件header1.h中,文件header1.h的内容如下:

cout << "k is " << k << endl;

在这里插入图片描述
编译main.cpp没问题,相关截图及运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上面这个例子可以看出,文件包含操作是可以在任意地方进行的。

02-文件名用尖括号和双撇号(双引号)括起来有什么不同?

这个问题我之前已经写过博文了,详情见 https://blog.csdn.net/wenhao_ir/article/details/124433648

03-关于头文件被重复包含的问题

这个问题专门写了篇博文 https://blog.csdn.net/wenhao_ir/article/details/125670576

04-关于h文件与hpp文件的区别

根据博主的实际操作,因为它是把被包含文件的内容引入到主文件中,所以其实里面是什么内容并无要求,可以是宏定义、函数声明、函数实现、结构体定义、类定义等,只要符合C/C++的语法规范就行。
至于它们的内容区别,实际上是人们约定俗成的规定,人们通常在h文件中放入函数声明、宏定义之类的。而在hpp文件中,人们既放函数声明、宏定义之类的,也放具体的实现,比如函数的实现、类的实现等。
远没有博文 https://ouyangpeng.blog.csdn.net/article/details/121780555中说的那么复杂。

猜你喜欢

转载自blog.csdn.net/wenhao_ir/article/details/125668051