天天看点

c++预处理器概述 #define #ifdef #ifndef #endif

预处理器:

确保头文件多次包含仍能安全工作,即可以有效地防止头文件重复包含的发生.

它由c++语言继承c语言而来,预处理器是在编译之前执行的一段程序。

我们比较熟悉的#include 就是一项预处理功能,当预处理器看到#include标记时就会用指定的头文件代替#include。

预处理器还会用到一项预处理功能就是头文件保护符,头文件保护符依赖于预处理变量,而预处理变量有两种状态:已定义和未定义。

我们经常用#define指令把一个名字设定为预处理变量,

#ifdef 和#ifdnf 指令用于 检查某个预处理变量是否已经定义。

#ifdef 为真说明变量已经被定义

#ifndef 为真说明变量还未被定义

一旦上述某个检查结果为真则执行后续操作直至遇到#endif指令为止,

检查结果为假则忽略在其中间的部分。

//现有头文件Student.h 和头文件Teacher.h

#ifndef STUDENT_H       
#define STUDENT_H
#include "Student.h"  //#ifndef 为真时执行此操作
#endif _STUDENT_H_

#ifdef STUDENT_H	  
#include "Teacher.h"  //#ifdef 为真时执行此操作
#endif
//两个指令结果都为真 两个头文件全被导入
           

提示:

1.预处理变量无视作用域规则

2.为了避免与其他命名冲突,一般都把预处理变量的名字全部大写或配合'_'命名