C语言 带参数的宏与“#”运算符(方便调试输出)

1、预定义的宏

在C语言中预定义了一些宏,这些宏主要提供当前编译的信息。 这些宏的名字都是以两个下划线字符开始和结束的。

例如:“__FUNCTION__”用于表示当前所在函数名,它实际上是一个代码块作用域变量,而不是一个宏,它提供了外层函数的名称,用于程序调试和异常信息报告。

2、带参数的宏

带参数的宏定义的格式如下:

#define 标识符(X1,X2,.....,Xn)替换列表

其中,x1,x2,,Xn是标识符(宏的参数),这些参数可以在替换列表中根据需要出现任意次。 宏命令总是在第一个换行符处结束,如果想在下一行继续宏命令,则必须在当前行的末尾使用“\”字符。 当预处理器遇到一个带参数的宏时,会将定义存储起来以便后面使用。

3、“#”运算符

“#”运算符将一个带宏的参数转换为字符串常量,它仅允许出现在带参数的宏的替换列表中。

测试代码:

#include<stdio.h>
#define PRINT_MANY(x,y,z)	printf("%5d %5d %5d\n",x,y,z); 
#define PRINT_INT(i) 				\
printf("%8s(): &%-5s=0x%-6x, %-5s=0x%-6x %-5d\n", __FUNCTION__, #i, &(i), #i, i, i);
int add(int a, int b)
{
	PRINT_INT(a);
	PRINT_INT(b);
	return a+b;	
}
 
int main()
{
	int iNum1,iNum2,iNum3;
	PRINT_MANY(iNum1,iNum2,iNum3);
	PRINT_INT(iNum1); 
	add(iNum2,iNum3);
	return 0;
}

测试输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值