C++防止头文件重复包含
1.预编译阶段,把所有#include ”.h“ 用.h的内容来替换了, 所以之后就没有.h了所有.h的内容都已经包含进了需要它们的.cpp中
2.生成最后的exe文件是由编译、链接两步完成的, 编译是源代码生成obj二进制目标文件的过程, 注意一个源代码文件生成一个obj文件,例如a.cpp中可以有一个void fun(); b.cpp中可同时有一个void fun();
3.编译期间, 我们只要声明了的东西就能使用, 而无需它的定义, 声明可以重复, extern在编译时是告诉该编译单元该变量的定义在别的编译单元里, 相当于声明, 链接时, 定义在整个程序中有且仅有一份。
4.#ifndef _A_H
#define _A_H
#endif
预编译阶段, 当第一次执行该段代码(即#include “a.h”,参见第一条)时, 由于我们并没有宏定义A_H_, 所以会执行#define A_H_以及void fun()两条语句, 第二次执行该段代码时因为#ifndef A_H_为假就直接走到#endif后面也就等于该次#include “a.h”什么也没做了