第9章编译预处理
第9章 编译预处理
*1、宏定义 ■*2、文件包含 3、条件编译
◼ *1、宏定义 ◼ *2、文件包含 ◼ 3、条件编译
预处理命令 编译预处理:在编译源程序之前根据预处理命 令对源程序进行的预加工,由编译系统中的预 处理程序完成。 ■格式:以符号“#”开头 如:# include< math. h ■位置:宏定义与文件包含命令一般放在程序的 开头(原则上可以放在程序中的任意位置) 作用域:从定义起直到其所在源程序的末尾 使用预处理命令的好处:(分别介绍) 改进程序设计环境,提高编程效率,易读、易改
预处理命令 ◼ 编译预处理:在编译源程序之前根据预处理命 令对源程序进行的预加工,由编译系统中的预 处理程序完成。 ◼ 格式:以符号 “ # ” 开头 ◼ 如:#include <math.h> ◼ 位置:宏定义与文件包含命令一般放在程序的 开头(原则上可以放在程序中的任意位置) ◼ 作用域:从定义起直到其所在源程序的末尾。 ◼ 使用预处理命令的好处: (分别介绍) 改进程序设计环境,提高编程效率,易读、易改
91宏定义 不带参数的宏定义: 常用于将一些有特殊含义的常量定义成符号常量,使程 序易读、易改。 例如3.14代表,271代表e,用-1表示文件的结束标 志等。如果在程序中直接用3.14,2.71,-1等这些值,会 出现以下问题 )数值的含义不明显,影响程序的可读性 2)若程序中多次使用某一个常量,要修改时必须 修改,即麻烦又易出错。 用不带参数的宏定义,可以很好的解决此问题
9.1 宏定义 一、不带参数的宏定义: 常用于将一些有特殊含义的常量定义成符号常量,使程 序易读、易改。 例如3.14代表 ,2.71代表e,用-1表示文件的结束标 志等。如果在程序中直接用3.14,2.71,-1等这些值,会 出现以下问题: 1) 数值的含义不明显,影响程序的可读性。 2)若程序中多次使用某一个常量,要修改时必须一一 修改,即麻烦又易出错。 用不带参数的宏定义,可以很好的解决此问题。
不带参数的宏定义 如符号常量的定义: #define pi 3. 14 #define e 2.71 #define eof -1 #define null 0 #define NUM stu 30 若程序中有语句: for(j-o j<NUM STU: j++) sum+-scoreLjl 则编译预处理时,语句中的 NUM STU用30来代替: for(=0; j<30: j++) sum+-scoreljl
不带参数的宏定义 如符号常量的定义: #define PI 3.14 #define E 2.71 #define EOF -1 #define NULL 0 #define NUM_STU 30 若程序中有语句: for(j=o;j<NUM_STU;j++) sum+=score[j]; 则编译预处理时,语句中的NUM_STU用30来代替: for(j=0;j<30;j++) sum+=score[j];