宏定义c语言 宏定义用法?
宏定义用法?
说到宏定义,我们首先应该了解什么是预处理指令。我相信你对它并不陌生。在编写程序之前,程序开头的include指令和define指令都是预处理指令,这使得我们的编译更加高效和方便。因此,用户可以在C语言中添加一些特定的预处理指令。
C语言提供的预处理功能有:宏定义、文件包含、条件编译。今天,我将带大家学习宏定义。宏定义有两种,一种是“无参数宏定义”,另一种是“有参数宏定义”。
1、无参数宏定义
无参数宏定义相对简单,它使用指定的标识符来表示字符串。它的一般形式是;
#define identifier string
它的功能是用这个程序文件中指定的标识符E替换2.71828459。在预处理中,指令后的所有e都被2.7182818459替换。此方法允许用户用简单名称替换长字符串,因此此标识符(名称)称为“宏名称”
在预处理期间用字符串替换宏名称的过程称为“宏扩展”。#Define是宏定义指令。
2、带参数宏定义
带参数宏定义不仅是一个简单的字符串替换,也是一个参数替换。其定义的一般形式是;
#define identifier(macro name)(parameter table)string
该字符串包含括号中指定的参数。
宏定义只占用编译时间,而函数调用占用运行时间(分配单元、保存字段、值传输、返回)。每次执行都必须加载,因此执行速度比宏定义慢。
当宏定义被多次使用时,源程序在宏定义展开后会很长时间,因为每次展开都会使程序增长,但执行速度更快(这不是绝对的)。当宏定义扩展较多时,目标文件很大,执行过程中系统频繁换页,效率较低)。函数调用不会使源程序变长。
什么是宏定义?
一般来说,就是提前定义和编译您常用的值或公式,从而优化代码。让我们看一下下面的列并体验一下表达式:#define identifier string,例如:#define PI 3.1415926,这意味着将3.1415926赋给PI,并将其与之进行比较:#define a(x,y)x*y,这意味着将3.1415926赋给主函数x=2,y=3中的PI,然后是a(x,y)=6,因为它定义了a(x,y)=x*y、 请记住,如果定义了宏,它的值(在整个程序中)不会更改,除非您再次定义它,但它会降低程序的可读性,因此请尽量不要重复定义相同的内容。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。