包含守卫#ifndef
通常用于放在头文件中,防止文件内容被多次包含在同一个文件中:
//---------------------------test.h begin-----------------------------
#ifndef TEST_H
#define TEST_H
void test();
#endif
//---------------------------test.h end-------------------------------
//---------------------------main.cpp begin-------------------------------
#include "test.h" //第一次被#include时,由于没有定义TEST_H,test.h的内容会被包含进来
#include "test.h" //第二次被#include时,由于在第一次#include时已经通过#define定义了TEST_H,所以test.h的内容不会被重复包含
//---------------------------main.cpp end---------------------------------
这种方式的优点是:
1.可以对文件内容进行局部控制。
2.如果多个文件具有相同文件内容,但文件名不同,那么包含守卫也可以成功的避免多次包含的问题。
这种方式的缺点是:
1.包含守卫的名字要保证唯一性,否则如果不同文件用了相同的包含守卫,会导致只有一个文件被真正的包含进来。
2.由于是方生在预编译期间,需要打开文件才能对包含守卫进行判断&