c++的“头文件中的#ifndef #define #endif 防止该头文件被重复使用”,其中的“被重复使用”是什么意思?
这个重复使用不是针对该头文件被其他文件多次调用,而是在同一个cpp文件被include多次,为什么会出现这样的情况?
是因为include嵌套使用造成的
产生的危害
有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。
有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。
是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?
不是,但是这是一种良好的编程习惯
#inndef #define #endif 书写格式
#ifndef A_H //如果不存在a.h头文件
#define //就引入a.h头文件
#endif // 否则不需要引入
实例分析
#ifndef GRAPHICS_H // 防止graphics.h被重复引用
#define GRAPHICS_H
#include <math.h> // 引用标准库的头文件
…
#include “header.h” // 引用非标准库的头文件
…
void Function1(…); // 全局函数声明
…
class Box // 类结构声明
{
…
};
#endif