- 1
- 0
- 约1.61千字
- 约 7页
- 2017-12-26 发布于河北
- 举报
C语言程序设计-第九章 预处理命令
第9章 预处理命令 第9章 预处理命令 作用:对源程序编译之前做一些处理,生成扩展名为的C源程序。 种类 宏定义 #define 文件包含 #include 条件编译 #if--#else--#endif 等 格式: “#”开头 占单独书写行 语句尾不加分号 9.1 宏定义 9.1.1不带参数宏定义 一般形式: #define 宏名 字符串 功能:用指定标识符(宏名)代替字符串。 9.1.2带参数宏定义 一般形式: #define 宏名(参数表) 字符串 如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”); 定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束。 #undef可终止宏名作用域。 格式: #undef 宏名 例 #define YES 1 main() { …….. } #undef YES #define YES 0 max() {…….. } YES原作用域 YES新作用域 宏展开:预编译时,用字符串替换宏名---不作语法检查。 引号中的内容与宏名相同也不置换。 例 #define PI 3.14159 printf(“2*PI=%f\n”,PI*2); 宏展开:printf(“2*PI=%f\n”,3.14159*2); 如 if(x==YES) printf(“correct!\n”); else if (x==NO) printf(“error!\n”); 展开后: if(x==1) printf(“correct!\n”); else if (x==0) printf(“error!\n”); 例 #define MAX MAX+10 (?) 宏定义可嵌套,不能递归。 宏定义中使用必要的括号() 例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2; ( ) ( ) 例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2; 例 #define S (r) PI*r*r 相当于定义了不带参宏S,代表字符串“(r) PI*r*r” 。 宏展开:形参用实参换,其它字符保留 宏体及各形参外一般应加括号() 例 #define S(a,b) a*b ……….. area=S(3,2); 宏展开: area=3*2; 不能加空格 例 #define POWER(x) x*x a=4; b=6; z=POWER(a+b); 宏展开:z=a+b*a+b; 一般写成: #define POWER(x) ((x)*(x)) 宏展开: z=((a+b)*(a+b));
原创力文档

文档评论(0)