C++程序设计之编译预处理
1、在C++源程序中允许用一个标识符来表示一个字符串,称为“宏”。
在编译预处理时,对程序代码中所有出现的“宏名”,都用宏定义中的字符串去代换,称为“宏代换”或“宏展开”。

2、无参宏的宏名后不带参数。
一般形式
#define 标识符 字符串

3、使用无参宏定义需要注意5点:
1、宏定义只是一种简单的文本代换,字符串中可以含任何字符,预处理程序对它不作任何检查。
2、宏定义不是说明或语句,在行末不要加分号,如加上分号则连分号也一起置换。
3、宏定义必须写在函数之外,其作用域为从宏定义命令到源程序结束。
4、宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。
5、宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。
4、文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。
一般形式
#include "文件名"

5、使用文件包含需要注意:
1、使用尖括号表示在系统目录中查找,而不在源文件目录中查找;使用双引号则表示首先在当前的源文件目录中查找,若未找到才到系统目录中查找。
2、一个include命令只能指定一个被包含文件。
3、文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。
6、ifdef条件,如果标识符已被#define命令定义过,则对程序段1进行编译;否则对程序段2进行编译。
一般形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
7、ifndef条件,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。
一般形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
8、if条件,如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译。
一般形式:
#if 常量表达式
程序段1
#else
程序段2
#endif