C语言第9章编译预处理命令详解
C语言程序设计
第9章预处理命令
?理解宏定义的概念
?掌握不带参数、带参数的宏定义
?理解文件包含
?了解条件编译
C语言程序设计
?预处理
?种类
?宏定义 #define
?文件包含 #include
?条件编译 #if--#else--#endif
?格式:
? “#”开头
?占单独书写行
?语句尾不加分号
C语言程序设计
?宏定义 宏体可缺省,表示宏名
定义过或取消宏体
?不带参数宏定义
?一般形式: #define 宏名 [宏体]
?功能:用指定标识符(宏名)代替字符序列(宏体)
如 #define YES
?定义位置:任意(一般在函数外面)
#define NO 0
?作用域:从定义命令到文件结束
#define PI 3.1415926
例 #define YES
? #define OUT printf(“Hello,World”);
#undef可终止宏名作用域
main()
例例#define #define WIDTHWIDTH8080
格式: #undef 宏名
{ …….. YES原作用域
( )
#define #define LENGTHLENGTHWIDTHWIDTH+40+40
? }
宏展开:预编译时,用宏体替换宏名不作语法检查
var=LENGTH*2;var=LENGTH*2;
#undef YES
如 if(x==YES) printf(“correct!\n”);
?引号中的内容与宏名相同也不置换
( )
宏展开宏展开:var= 80+40 *2;:var= 80+40 *2;
#define YES 0
else if (x==NO) printf(“error!\n”);
max()
?宏定义可嵌套,不能递归 YES新作用域
展开后例 :#defin