C语言中#define宏中省略号作用,例子:#define __stringify_1(x...) #x

学习Linux misc驱动时遇到以下函数定义:
代码路径:include\linux\stringify.h

#ifndef __LINUX_STRINGIFY_H
#define __LINUX_STRINGIFY_H

/* Indirect stringification.  Doing two levels allows the parameter to be a
 * macro itself.  For example, compile with -DFOO=bar, __stringify(FOO)
 * converts to "bar".
 */

#define __stringify_1(x...)	#x
#define __stringify(x...)	__stringify_1(x)

#endif	/* !__LINUX_STRINGIFY_H */

作用:
宏定义中的省略号表示一串可变的参数, 这一串参数可用例程中的变量x加以引用。

用法举例:

#define MISC_MAJOR		10

#define MODULE_ALIAS_MISCDEV(minor)				\
	MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR)	\
	"-" __stringify(minor))

表示将__stringify中定义的变量字符串化,结果为:

#define MISC_MAJOR		10

#define MODULE_ALIAS_MISCDEV(minor)				\
	MODULE_ALIAS("char-major-10-"__stringify(minor))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值