在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。(个人:也就是要进行两个替换,一个是用实参去替换形参,另一个进行宏展开) 带参宏定义的一般形式为: 1 #define 宏名(形参列表) 字符串 在...
l 宏定义不是C语句,不必在行末加分号。l 对程序中用“”括起来的字符串内的字符,即使与宏名相同,也不进行置换。l 宏定义可以嵌套使用,例如:#define R 3.0#define PI 3.14159#define L 2*PI*R 3.知识点:带参数的宏定义l 一般形式:#define 宏名(参数表) 字符串l 带参数的宏不占运行时间,只占编译时间...
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。带参宏调用的一般形式为:宏名...
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。 对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中含有各个形参。 带参宏调用的一...
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 ...
对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为:#define 宏名(形参列表) 字符串。在字符串中含有各个形参。 带参宏调用的一般形式为:宏名(实参列表)。例如:#define M(y) yy+3y,形参 y 出现在条件表达式中。程序第7行max=M(5),为宏调用,实参5将去代替形参 y,...
1.带参数的宏定义中,宏名和新参表之间不能有空格, 2.在带参数的宏定义中,形参参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体值,要用它去代换形参,因此必须作类型说明。 #include<stdio.h>#include<iostream>#defineMAX(a,b) (a>b)?a:bintmain() {intx, y, max; ...
当宏参数在宏的定义中出现超过一次的时候,如果参数带有副作用,那么你在使用这个宏的时候就可能出现危险,导致不可预测的后果。副作用就是表达式求值的时候出现的永久性效果。 x+1;//不带副作用 x++;//带有副作用 MAX宏可以证明具有副作用的参数所引起的问题。 ...
带参数的宏定义不是简单的字符串替换,还要进行参数替换。一般格式如下: #define 宏名(参数表)字符串 1. 程序举例: 对两个数实现乘法、加法混合运算。 #include <stdio.h> #define MIX(a,b) ((a)*(b) + (b)) int main(void) { int x = 5, y = 9; ...
C语言中宏定义分两种,无参的宏和有参的宏 1.无参数的宏 无参数宏定义的一般形式为: 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 #define name value//name是你起的名字,就跟起函数名一样,value是你要给这个名字赋予什么值//示例:#include<iostream>using namespace std;#define pi3.14int...