c语言宏定义多行函数 c语言宏定义函数格式

在C语言中 宏定义是什么?

在C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了砚山免费建站欢迎大家使用!

扩展资料:

宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。

计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。

参考资料:

宏定义百度百科

在C语言中的宏定义

#define M(a) a*a

宏里面描述的a相当于函数的参数,它和你描述的主函数的a是没关系的,预处理时对宏只是做简单的替换。。例如

#include "stdio.h"

#define M(a) a*a

int main()

{

int i = 10;

printf("%d\n",M(i));

return 0;

}

这里会把M(i)替换成 i*i。。。。

c语言宏定义如何用?用宏定义有什么优点?

主要用于函数重定义,通用性,可以用一个变量符号替代另一个变量符号

格式:#define M(x,y) x+y

在主程序里写入z=M(6,9);等价于z=6+9;而写成z=(6-8,9);等价于z=6-8+9 ;直接代入

还有就是 :#define Uint unsigned int 即用 Uint 代替unsigned int 便于书写,还有就是不同操作系统的通用变量识别

C语言宏定义

这个问题描述的不够详细。

宏定义中有一个很重要的事情就是要给参数加上括号,否则就有可能影响最终的结果。

因为宏只是简单的字符替换。

如:

#define TIME_TWO(n) (n*2)

//当你参数是单一值是,看起来无影响,比如

TIME_TWO(3)

//会被正确的替换为如下,结果为6

(3*2)

//但如果你的参数本身就是一个表达式,比如

TIME_TWO(3+2)

//那么就会被替换为如下,结果为7,不符合预期

(3+2*2)

//所以宏定义中需要包裹参数防止优先级影响结果

#define TIME_TWO_PREFECT(n) ((n)*2)

//同样调用

TIME_TWO_PREFECT(3+2)

//就会被正确的替换为如下,结果为10,符合预期

((3+2)*2)


网站栏目:c语言宏定义多行函数 c语言宏定义函数格式
文章地址:http://pwwzsj.com/article/dohgijs.html