1、#include指令(文件包含指令)
方式:
①#include <filename>:按标准方式搜索,文件位于系统目录的include子目录下,一般用于包含例如iostream之类的头文件
②#include "filename":首先在当前目录搜索,若没有,再按标准方式搜索,一般用于包含自定义头文件
2、#define与#undef指令
①#define的作用:
定义符号常量,例如:#define PI 3.14表示定义了一个符号常量PI的值为3.14
声明定义,例如:#define __HEAD_H__表示在此处定义了_HEAD_H
②#undef的作用:删除由#define定义的宏,使之失效
3、条件编译指令
只对满足条件的代码进行编译,将不满足条件的代码舍弃,以达到优化代码的目的
①
/* 当常量表达式constexpr_1非零时编译程序段codeSegment_1, 否则当常量表达式constexpr_2非零时编译程序段codeSegment_2, 若constexpr_1和constexpr_2都为零,则编译程序段codeSegment_3 */ #if constexpr_1 codeSegment_1 #elif constexpr_2 codeSegment_2 #else codeSegment_3 #endif
②
/* 若标识符identifier已经被#define定义过,则编译程序段codeSegment_1, 否则编译程序段codeSegment_2 */ #ifdef identifier codeSegment_1 #else codeSegment_2 #endif
③
/* 若标识符identifier未被#define定义过,则编译程序段codeSegment_1, 否则编译程序段codeSegment_2 */ #ifndef identifier codeSegment_1 #else codeSegment_2 #endif
4、defined操作符
defined是一个操作符,不是指令,所以不需要以#开头,使用方式:defined(identifier)
作用:#ifndef __HEAD_H__等价于#if!defined(__HEAD_H__)
5、预编译处理在工程上的应用
通常在一个工程的头文件中会加上如下预编译指令,来防止重复包含和重复定义
//head.h #ifndef __HEAD_H__ #define __HEAD_H__ codeSegment #endif