#ifndef #define #endif的作用
今天在学习C语言的时候遇到了一个不懂的问题,在很多头文件里面都有如下的格式:
#ifndef XX_H_
#define XX_H_
....
....
....
#endif
在百度了之后,查询到这个作用是防止该头文件被重复引用,可是在这里的被重复引用是什么意思呢?在经过了一番查找之后,终于明白了这个作用,所以打算在这里来写博客来总结一下。
#ifndef A_H_
#define A_H_
....
....
....
#endif
这段代码的意思是,如果没有定义a.h则执行#ifndef到#endif之间的代码,否则不执行。这样如果我们在c.cpp中这样写的:
#include "a.h"
#include "b.h"
系统在引用a.h头文件时,会先进入#ifndef判断a.h头文件是否已经被引用,由于在这里我们是第一次引用a.h头文件,所以它会引用后面的代码。在引用b.h时,由于b.h里面包含了a.h头文件,所以在b.h中引用a.h时,它会先判断a.h是否已经被引用,由于我们已经已经引用了a.h头文件,所以条件为假,系统不会引用a.h后面的代码,这样就防止了在一个cpp文件多次引用了同一个头文件。