C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。带参宏调用的一般形式为:宏名...
1)宏定义时参数要加括号,如不加括号,有时结果是正确的,有时结果却是错误的。 #define MIX(a,b) (a*b + b) 1. 例如,上面的例子中,当参数x = 10, y = 9时,在参数不加括号的情况下调用MIX(x,y),可以正确地输出结果,但是 当参数x = 10, y = 6 + 3时,在参数不加括号的情况下调用MIX(x,y...
#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。 (1) 简单的宏定义 格式:#define <宏名/标识符> <字符串> eg:#define PI 3.1415926 说明...
宏定义只是简单的文本替换,把替换列表中的内容取代标识符的位置,替换完就会删除所有对应的标识符。因此,宏定义的参数是不需要分配空间的。函数每次调用的时候,系统都会给形式参数重新分配一块内存空间用来存放。5.4 执行速度 宏定义是文本替换,是不需要进行任何语法和逻辑检查,所以速度会快一些。函数在运行阶段,...
1.带参数的宏定义中,宏名和新参表之间不能有空格, 2.在带参数的宏定义中,形参参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体值,要用它去代换形参,因此必须作类型说明。 #include<stdio.h>#include<iostream>#defineMAX(a,b) (a>b)?a:bintmain() {intx, y, max; ...
带参数宏定义进一步扩充了无参数宏定义的能力,在字符序列替换同时还能进行参数替换。带参数定定义的一般形式为 # define 标识符(参数表)字符序列其中参数表中的参数之间用逗号分隔,字符序列中应包含参数表中的参数。 7、在定义带参数的宏时,宏名标识符与左圆括号之间不允许有空白符,应紧接在一起,否则变成了无参数...
带参数的宏定义:把出现宏名地方都会把宏名后面小括号中的参数代入到宏后面的表达式中,然后进行替换 格式:#define 宏名(参数列表) 表达式 注意点:1、参数列表中没有类型 2、宏名与括号之间一定不要加空格 带参数的宏与函数的区别 1、函数有一个调用过程,会开辟新存储空间,需要花费一些开销的 ...
1 不带参数宏定义又称为宏代换,简称“宏”。格式为:#define标识符字符串宏名一般用大写,宏定义末尾不加分号。2 如果程序中有大量相同变量数据要重新赋值,使用宏就不用一个一个地去修改。替换过程是在编译前,只是单纯的做字符替换,所以不占存储空间。带参数宏 1 宏也可以带参数,格式是#define宏名(参数...
带参数的宏定义格式为: #define 标识符(参数1,参数2,...,参数n) 替换列表 例如,求两个参数中最大值的带参宏定义为: #define MAX(a,b) ((a)>(b)?(a) : (b)) 1. 当有如下语句时: int c=MAX(5,3); 1. 预处理器会将带参数的宏替换成如下形式: ...