预处理指令
1、宏定义 2、条件编译 3、文件包含
1》所有预处理指令都是以#开头
2》预处理指令在代码翻译成0和1之前执行
3》预处理指令位置随便写
4》作用域:从编写指令的那一行开始,一直到文件结尾
宏定义
1》不带参的宏定义
#define 宏名 字符串 // 用一个指定的标识符(即名字)来代表一个字符串
#define 宏名(一般用大写或以K开头) 4
#define COUNT 4 // 从这一行开始把文件中所有的COUNT替换为4
#undef COUNT // 从这一行开始COUNT就失效
2》带参的宏定义
#define sum(v1, v2) ((v1)+(v2))
文件包含(#include)
1》定义:把指定的文件插入到该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连接成一个源文件。
2》系统自带的文件用#include <>,自定义的用#include " "
3》一个#include的命令只能指定一个被包含文件
4》文件包含允许嵌套,即在一个被包含的文件中可以包含另一个文件
5》被包含的扩展名可以不是.h文件
条件编译
第一种形式的格式为:
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
#ifdef 标识符
程序段
#endif
第二种形式的格式为:
#ifndef 标识符
程序段1
#else
程序段2
#endif
与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的功能正相反。
第三种形式的格式为:
#if 常量表达式
程序段1
#else
程序段2
#endif
它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。