理论教育 5秒搞定C语言宏定义-《C语言程序设计》

5秒搞定C语言宏定义-《C语言程序设计》

时间:2023-10-20 理论教育 版权反馈
【摘要】:例如:#defineMAX10语句:printf;(不置换)②宏定义可嵌套,不能递归。例如:#defineP25#defineRreturn(2*P);(√)例如:#defineMAXMAX+10(×)③宏定义中使用必要的括号()。例如:#defineMAX5+10语句:k=30/MAX;结果:162.带参数宏定义宏展开:area=3*2;①宏展开:形参用实参换,其他字符保留。

5秒搞定C语言宏定义-《C语言程序设计》

宏定义分为不带参数宏定义和带参数宏定义两种。

1.不带参数宏定义

一般形式: #define <标识符> <字符串>

功能:把程序中该宏定义之后的所有指定标识符(宏名)用字符串(宏体)替换。其中标识符(宏名)不能用引号括起来,字符串(宏体)可缺省,表示宏名定义过或取消宏体。

宏定义的位置可任意改变,一般在函数外面,文件开头处。其作用域是从定义命令到文件结束。#undef可终止宏名作用域。

格式: #undef 宏名

宏展开:预编译时,用宏体替换宏名——不进行语法检查。

提示:

①引号中的内容与宏名相同也不置换。

例如:#define MAX  10

语句:printf("MAX");   (不置换)

②宏定义可嵌套,不能递归

例如:#define P  25

#define R  return(2*P);   (√)

例如:#define MAX  MAX+10   (×)

③宏定义中使用必要的括号()。

例如:#define MAX  5+10(www.daowen.com)

语句:k=30/MAX;  结果:16

2.带参数宏定义

宏展开:    area=3*2;

①宏展开:形参用实参换,其他字符保留。

例如:#define S (r)  PI*r*r

相当于定义了不带参宏S,代表字符串"(r)  PI*r*r"

②宏体及各形参外一般应加括号()。

例如:#define POWER(x)   x*x

x=4; y=6; z=POWER(x+y);

宏展开:z=x+y*x+y;

一般写成: #define  POWER(x)  ((x)*(x))

宏展开: z=((x+y)*(x+y));

③较长定义在一行写不下时,可在本行末尾使用斜杠表示要续行,注意断开的位置。

例如:#define PRX printf("Chongqing Economic\

Management University."); \

printf("\n");

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈