头文件被重复包含的危害及解决办法

头文件被重复包含的危害

1.简单的理解:

无非就是头文件里有一行
int a=1;
包含两次就变成了
int a=1;
int a=1;
于是变量重复定义,报错
类,函数同理

而当你写成
#ifndef XXX #define XXX
int a=1;
#endif

包含两次就是
#ifndef XXX #define XXX
int a=1;
#endif
#ifndef XXX #define XXX
int a=1;
#endif
第一次中,由于没有定义XXX,所以做了两件事,定义XXX,然后int a;
第二次中,由于已经定义XXX,所以啥都不做

pragma once是上述方式的简写,好处是再也不会有两个头文件因为使用了同样的XXX而被忽略了

2.老流氓的理解:

你用过的套套肯定不会翻过来再用一遍

3.复杂的情况:

从概念上讲,头文件的功能是一般用来进行申明的(等函数原型或变量引用,宏定义)。C文件是用来进行定义的(函数定义、变量定义)。#include 是在编译器进行编译之前,即在预编译时把它后面所写的那个文件的内容,完完整整地、 一字不改地包含到当前的文件中来。
实际上C文件中是C语言的源代码,H头文件里也是C语言的源代码,所有符合C语言语法的代码都可以写在H头文件或C文件中。H头文件可以用INCLUDE,C文件也可以用INCLUDE。
(注意:C文件一般不建议使用INCLUDE,因为有的编译器在检查文件依赖性时,当INCLUDE的C文件变化时,不会重新编译C文件。)
1、C文件和H文件都是C语言的源代码,C语言语法中对于变量和函数是不能重复定义的,当C文件或H文件中的源代码中有相关内容时,重复包含会导致编译出错。
2、如果严格的遵守要求,H头文件中全是申明,重复包含不会有什么问题的。
3、规范的按照C文件和H头文件的用法来编码,尽量避免头文件重复包含,避免包含C文件,这样的好处是,代码规范,不易出错,易维护、可读性强、可移植性好。

解决办法:

头文件被重复包含的危害及解决办法