源程序编译预处理命令一律以‘#’开头
5.1宏定义
不带参数的宏定义
# define 宏名 字符串
宏命令之后,出现宏名的地方均用其对应的字符串来替换。
宏替换是一种”机械替换“,宏定义语句后一般不加分号,因为它仅具有替换功能,并不是具体的代码语句,如果行末有分号,那么分号也属于替换对象的一部分。
注意:
- 宏展开只是一个简单的机械替换,不做语法检查,不是一个语句,其后不加“;”
- #define命令出现在函数外面,其有效范围定义处至本源文件结束,可以用#undef命令终止宏定义的作用域
- 在进行宏定义中,可以用已定义的宏名,进行进行层层置换
- 对程序中用双引号括起来的字符串内容,即使与宏名相同,也不进行置换
带参数的宏定义
格式:#define 宏名(参数表) 字符串
例如:#define S(a,b) a*b
宏展开只占用编译时间,不占用运行时间
5.2文件包含
格式:#include<文件名>或#include "文件名"
注意:一个include命令只包含一个头文件。文件包含的命令必须是文本文件(ASCII码文件),一般是C++源文件或系统库文件。