第十三章编译预处理和动态存储分配 13.1编译预处理 以#号开头的行,统称为编译预处理如 #define #include 定义:对C源程序编译前,由编译预处理程序一 进行预处理 每行的结束不能加
第十三章 编译预处理和动态存储分配 13.1 编译预处理 •以#号开头的行,统称为编译预处理如 #define,#include •定义:对C源程序编译前,由编译预处理程序 进行预处理 •每行的结束不能加;
3.1.1宏替换 无参数的宏定义 格式:# define宏名替换文本 or# define宏名(说明宏名已被”定义“ 如:# define sⅠZE100 ·替换文本中可以包含已定义过的宏名 如:# define pⅠ3.14 #define ADdPi(PI+1) #define TWO ADDPI (2 ADDPD
13.1 .1宏替换 一、无参数的宏定义 • 格式:#define 宏名 替换文本 or #define 宏名 (说明宏名已被”定义“) 如 :#define SIZE 100 • 替换文本中可以包含已定义过的宏名 如: #define PI 3.14 #define ADDPI (PI+1) #define TWO_ADDPI (2*ADDPI)
宏定义在一行中写不下,可在最后加“来继续 同一个宏名不能重复定义 ·替换文本不能替换双引号中与宏名相同的字符串 替换文本并不替换用户标识符中的成份 通常宏名的标识符用大写,这仅是一种习惯 宏定义的位置一般放在程序的开头
•宏定义在一行中写不下,可在最后加“\”来继续 •同一个宏名不能重复定义 •替换文本不能替换双引号中与宏名相同的字符串 • 替换文本并不替换用户标识符中的成份 •通常宏名的标识符用大写,这仅是一种习惯 •宏定义的位置一般放在程序的开头
有参数的宏定义 格式:# define宏名(形参表)替换文本 .fp: #define Mu(X, y)((X)*(y)) a=MU(5,2)/*引用带参的宏名* b=6/MU(a+3a); 注意:同一宏名也不能重复定义 圆括号不能少
二、有参数的宏定义 •格式: #define 宏名(形参表) 替换文本 •如: #define MU(X,Y) ((X)*(Y)) ………… a=MU(5,2); /*引用带参的宏名*/ b=6/MU(a+3,a); 注意:同一宏名也不能重复定义 ` 圆括号不能少
注意:宏替换不占运行时间 实参不能替换在双引号中的形参 三、终止宏定义 用# undef提前终止宏定义的作用域 1312文件包含 文件包含:指在一个文件中,去包含另一个 文件的全部内容 形式:# include“文件名“或# include<文 件名>
注意:宏替换不占运行时间 实参不能替换在双引号中的形参 三、终止宏定义 用#undef提前终止宏定义的作用域 13.1.2 文件包含 文件包含:指在一个文件中,去包含另一个 文件的全部内容。 形式:#include “文件名“ 或 #include <文 件名>