头文件(.h)中#ifndef/#define/#endif的用法

先说下作用吧:头文件中的 #ifndef/#define/#endif 是为了防止该头文件被重复引用

  1. 何为头文件被重复引用?
    其实头文件被重复的引用并不是指头文件不能在不同的两个文件中被 include,而是指一个头文件在同一个源文件中(cpp等)被include了多次。这种错误常常是由于include的嵌套使用造成的。比如:存在 a.h 文件 #include "c.h" 而此时 b.cpp 文件导入了 #include "a.h" 和 #include "c.h" 此时就会造成 c.h 重复引用。亦或者 a.h 文件 #include "c.h",b.h 文件也 #include "c.h"。然后另一个文件既 d.h #include "a.h" 也 #include "b.h",同样造成了 c.h 的重复引用。
  2. 头文件被重复引用有什么后果?
    有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。
  3. 是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?
    不是一定要加,但是不管怎样,用ifnde xxx #define xxx#endif或者其他方式避免头文件重复包含,只有好处没有坏处。

你可能感兴趣的:(头文件(.h)中#ifndef/#define/#endif的用法)