1. #ifndef ... #define ... #endif
所有.h文件都应该加上这种判断,为防止头文件重复包含。
条件指示符#ifndef 检查BOOKSTORE_H 在前面是否已经被定义,这里BOOKSTORE_H是一个预编译器常量习惯上预编译器常量往往被写成大写字母,如BOOKSTORE_H在前面没有被定义则条件指示符的值为真于是从#ifndef 到#endif 之间的所有语句都被包含进来进行处理。相反,如果#ifndef 指示符的值为假则它与#endif 指示符之间的行将被忽略,为了保证头文件只被处理一次,把如下#define 指示符
#define BOOKSTORE_H
放在#ifndef 后面这样在头文件的内容第一次被处理时BOOKSTORE_H 将被定义,从而防止了在程序文本文件中以后#ifndef 指示符的值为真。
只要不存在两个必须包含的头文件要检查一个同名的预处理器常量这样的情形这个策略就能够很好地运作。
BOOKSTORE_H只是一种自定义的写法,用来防止头文件被重复包含。各种写法都可以接收,因为每次的ifndef都只针对于它自己做判断。