郭一节编邙预处理概述 预处理命令 预处理命令共有十二条,分为五类: 宏定义 文件包含 条件编译 行号和文件名控制 其它 这里介绍宏定义、文件包含和条件编译。为 了与一般C语句相区别这些命令以符号“#”开 头
6 预处理命令共有十二条,分为五类 : – 宏定义 – 文件包含 – 条件编译 – 行号和文件名控制 – 其它 这里介绍宏定义、文件包含和条件编译。为 了与一般C语句相区别,这些命令以符号“#”开 头。 第一节 编译预处理概述 预处理命令
不带参数的宏定义 6带参数的宏定义 6宏与函数 门取消宏定义 个
7 不带参数的宏定义 带参数的宏定义 宏与函数 取消宏定义 第二节 宏定义
第二节宏定义 不带参数的宏定义 不带参数的宏定义的一般形式为: # define标识符字符串 用一个指定的标识符(即名字)来代表 个字符串,也是定义符号常量的形式, 如见过的: #define pi 3.14159 #define taX rate 0.0825
8 不带参数的宏定义的一般形式为: #define 标识符 字符串 用一个指定的标识符(即名字)来代表 一个字符串,也是定义符号常量的形式, 如见过的: #define PI 3.14159 #define TAX_RATE 0.0825 不带参数的宏定义 第二节 宏定义
第二节宏定义 不带参数的宏定义 例1: ·# define pi3.1415926 ° mainO 运行情况如下: Float l, s, r,v; nput radius. printf( input radius: ) l=25.1327 scanf(%f &r); s=50.2655 =2.0PIxr v=268.0826 s=Prior v=4.0/. printf(l-=%10.fns=%10.4fnv=%104fn", S, v);
9 例1: • #define PI 3.1415926 • main() • {float l,s,r,v; • printf("input radius:"); • scanf("%f",&r); • l=2.0*PI*r; • s=PI*r*r; • v=4.0/3*PI*r*r*r; • printf("l=%10.4f\ns=%10.4f\nv=%10.4f\n",l,s,v); • } 不带参数的宏定义 第二节 宏定义 运行情况如下: input radius: 4 l=25.1327 s=50.2655 v=268.0826
第二节宏定义 不带参数的宏定义 说明: 1.宏名一般习惯用大写字母,以便与变量名区别 2.使用宏名代替一个字符串,可以减少重复书写 某些字符串的工作量 3.宏定义只做简单的置换,不作正确性检查 4.宏定义不是C语句,不必在行末加分号 5.# define命令出现在程序中函数的外面,其有 效范围从定义命令之后到本源文件结束 6.可以用# undef命令终止宏定义的作用域
10 说明: 1. 宏名一般习惯用大写字母,以便与变量名区别 2. 使用宏名代替一个字符串,可以减少重复书写 某些字符串的工作量 3. 宏定义只做简单的置换,不作正确性检查 4. 宏定义不是C语句,不必在行末加分号 5. #define命令出现在程序中函数的外面,其有 效范围从定义命令之后到本源文件结束 6. 可以用#undef命令终止宏定义的作用域 不带参数的宏定义 第二节 宏定义