C语言宏定义详解


读完大约需要 10 分钟

在这里插入图片描述

标识符 #define

如何定义一个宏?
我们要使用 #define 来实现

#define 允许我们把参数替换在文本中,具体的格式是这样的

#define name( parament-list ) stuff

其中的parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中

比如

#define ADD(x,y) ((x)+(y))
//#define name( parament-list ) stuff

我们可以和这个格式一样对应起来

其中需要注意在定义宏的时候

  1. name 和 后方的左括号 ( ,要紧邻
  2. stuff 和前面部分相隔一个空格

预编译中的过程

我们已经会定义宏了
宏在预编译过程中会进行文本替换
如果我们定义一个宏,并且要实现其功能

#define SQUARE(x) x*x
int main()
{
   
	int n = 5;
	int ret = square(n);
	printf("%d",ret);
}

通过执行这个代码,结果会得到 25
具体过程是这样的,首先会替换define

int main()
{
   
	int n = 5;
	int ret = n*n;
	printf("%d",ret);
}

过程是通过替换实现的
那就导致这样一个结果,如果我们传参是 1+5 呢?

替换与优先级

#define SQUARE(x) x*x
int main()
{
   
	printf("%d",square(1+5));
	return 0;
}

我们本来先得到 6*6 = 36
但是结果是 11,为什么?
我们替换了就明白了

int main()
{
   
	printf
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值