宏定义

xiaoxiao2021-02-28  65

在预处理里面先进行了展开 C语言宏定义只是简单的替换和展开

格式:

  #define 宏名(参数表) 字符串   例如:#define S(a,b) a*b   area=S(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2;   类似于函数调用,有一个哑实结合的过程:   (1)实参如果是表达式容易出问题   #define S(r) r*r   area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;   正确的宏定义是#define S(r) (r)*(r)   (2)宏名和参数的括号间不能有空格   (3)宏替换只作替换,不做计算,不做表达式求解   (4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存   (5)宏的哑实结合不存在类型,也没有类型转换。   (6)函数只有一个返回值,利用宏则可以设法得到多个值   (7)宏展开使源程序变长,函数调用不会   (8)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)

转载请注明原文地址: https://www.6miu.com/read-80020.html

最新回复(0)