发布网友 发布时间:2022-05-05 17:59
共1个回答
热心网友 时间:2022-06-27 21:30
摘要宏定义又称为宏替换、宏代换,简称“宏”,是C提供的三种预处理功能①的其中一种。其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率②。1. #define命令#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。(1) 简单的宏定义 格式:#define 标识符> eg:#define PI 3.1415926 说明:①宏名一般用大写 ②宏定义末尾不加分好; ③可以用#undef命令终止宏定义的作用域 ④宏定义可以嵌套 ⑤字符串“”中永远不包含宏 ⑥宏替换在编译前进行,不分配内存,变量定义分配内存,函 数调用在编译后程序运行时进行,并且分配内存 ⑦预处理是在编译之前的处理,而编译工作的任务之一就是语 法检查,预处理不做语法检查 ⑧使用宏可提高程序的通用性和易读性,减少不一致性,减少 输入错误和便于修改。例如:数组大小常用宏定义(2) 带参数的宏定义(除了一般的字符串替换,还要做参数代换)格式:#define () eg:#define S(a,b) a*b area=S(3,2);第一步被换为area=a*b;第二步换为area=3*2; 一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。说明:①实参如果是表达式容易出问题 #define S(r) r*r area=S(a+b);第一步换为area=r*r;第二步换成 area=a+b*a+b; 当定义为#define S(r)((r)*(r))时area=((a+b)*(a+b)) ②宏名和参数的括号间不能有空格 ③宏替换之作替换不做计算,不做表达咨询记录 · 回答于2021-11-08C程序中怎么给define的量赋值宏定义又称为宏替换、宏代换,简称“宏”,是C提供的三种预处理功能①的其中一种。其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率②。1. #define命令#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。(1) 简单的宏定义 格式:#define 标识符> eg:#define PI 3.1415926 说明:①宏名一般用大写 ②宏定义末尾不加分好; ③可以用#undef命令终止宏定义的作用域 ④宏定义可以嵌套 ⑤字符串“”中永远不包含宏 ⑥宏替换在编译前进行,不分配内存,变量定义分配内存,函 数调用在编译后程序运行时进行,并且分配内存 ⑦预处理是在编译之前的处理,而编译工作的任务之一就是语 法检查,预处理不做语法检查 ⑧使用宏可提高程序的通用性和易读性,减少不一致性,减少 输入错误和便于修改。例如:数组大小常用宏定义(2) 带参数的宏定义(除了一般的字符串替换,还要做参数代换)格式:#define () eg:#define S(a,b) a*b area=S(3,2);第一步被换为area=a*b;第二步换为area=3*2; 一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。说明:①实参如果是表达式容易出问题 #define S(r) r*r area=S(a+b);第一步换为area=r*r;第二步换成 area=a+b*a+b; 当定义为#define S(r)((r)*(r))时area=((a+b)*(a+b)) ②宏名和参数的括号间不能有空格 ③宏替换之作替换不做计算,不做表达