在实际的工程中我们很有可能重复包含某一个头文件,比如下面这种情况:
![](https://img-blog.csdnimg.cn/c92bb34d4de24a7fa7503b31bd422f38.png)
开发人员B和开发人员C在自己的头文件中都包含了开发人员A的头文件,而开发人员D在自己的编译单元中包含了B和C的头文件,此时D就相当于包含了两次A的头文件,这就造成了重复包含,而在实际复杂的过程中,如果我们不对这种现象进行处理,很有可能重复包含多次某一个头文件,造成严重的代码冗余。
那我们该如何避免头文件被重复包含?
事实上我们可以使用条件编译来解决头文件被重复包含的问题,每个头文件的开头写:
#ifndef __TEST_H__
#define __TEST_H__
//头文件的内容
#endif //__TEST_H__
加入了这些预编译处理指令后,第一次包含该头文件的时候,__ TEXT_H__没有被定义,条件为真,那么就会对其中的内容进行预编译处理,所以就会定义__ TEXT_H__,并且头文件的内容会被预编译,也就是会被包含,第二次包含该头文件的时候,__ TEXT_H__已经被定义了,条件为假,就不会对其中的内容进行预处理,也就不会再定义__ TEXT_H__,不会包含头文件的内容。这样就可以避免头文件的重复包含。
__ TEXT_H__的命名通常是根据头文件的名称来写的。
我们也可以在头文件中直接加入这样一句代码:
#pragma once
它可以帮我们判断该头文件是否被包含,如果未被包含,那么就会包含该头文件,如果已被包含,那么就不会包含该头文件,进而避免头文件被重复包含。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)