#ifndef起到的效果是防止一个源文件两次包含同一个头文件
一般格式是这样的:
#ifndef <标识>
#define <标识>
......
......
#endif
<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
#ifndef _STDIO_H_
#define _STDIO_H_
......
#endif
#ifndef的用法举例
xxx.h:
#ifndef XXX_H /*如果没有定义XXX_H*/
#define XXX_H /*定义XXX_H为空字符串*/
class Xxx{
//... ...
};
#endif /*结束判断*/
如果这样的e79fa5e98193e4b893e5b19e31333332623239话,多次引入xxx.h会像下面这样:
#include "xxx.h" /*1次引入*/
#include "xxx.h" /*2次引入*/
#include "xxx.h" /*3次引入*/
展开为:
#ifndef XXX_H /* 没有定义XXX_H,条件成立 */
#define XXX_H /*定义XXX_H为空字符串*/
class Xxx{ /*引入class Xxx*/
//... ...
};
#endif /*结束判断*/
#ifndef XXX_H /* 已经定义XXX_H,条件不成立 */
#define XXX_H /*跳过*/
class Xxx{
//... ...
};
#endif
#ifndef XXX_H /* 已经定义XXX_H,条件不成立 */