方式一:条件编译:
#ifndef
#define
......//一些声明语句
#endif
这种方式依赖于宏名称不能冲突,而且这种方式可以保证同一个文件不被包含多次,也能保证内容完全相同的两个文件不会不小心同时包含。但是,如果宏名称相同,就会明明你包含了头文件,却找不到源文件。条件编译的有点事,跨平台效果好。
例:
//file1h
#define __BOOK_H_
现在有另外一个file2.book.h
#ifnedf _BOOK_H__
#define _BOOK_H__
//program
#endif // _BOOK_H__
在你的主函数里包含了该文件:
#include "file1.h”
#include"book.h"
预编译阶段,把file1里的宏展开,就得到了一个BOOK_H_的宏,这个时候就不会在包含book.h这个头文件了
方式二:#pragma once
这种方式又叫c和c++杂注,优点是,简单,没有宏定义冲突的情况,但是不跨平台,而且如果两个内容完全相同的文件被包含,不会报错。