您尚未登录。

楼主 #1 2020-04-07 09:04:58

ubuntu
会员
注册时间: 2020-03-30
已发帖子: 276
积分: 254

学渣请教一个C语言 #, ## 宏语法的问题

https://github.com/torvalds/linux/blob/master/drivers/pinctrl/sunxi/pinctrl-sunxi.h#L32

#define SUNXI_PINCTRL_PIN(bank, pin)		\
	PINCTRL_PIN(P ## bank ## _BASE + (pin), "P" #bank #pin)

所以这个宏函数:
SUNXI_PINCTRL_PIN(B, 4)


展开应该是:
PINCTRL_PIN(PB_BASE + 4, PB4)



那么问题来了, 请教 一个#, 和两个#有什么区别呢?

离线

#2 2020-04-07 09:13:29

有梦的地方
会员
注册时间: 2020-03-17
已发帖子: 284
积分: 284

Re: 学渣请教一个C语言 #, ## 宏语法的问题

自己调用自己?递归宏函数?

离线

#3 2020-04-07 09:56:55

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 392
积分: 336

Re: 学渣请教一个C语言 #, ## 宏语法的问题

#把宏参数作为一个字符串,##用于宏参数贴合

离线

#4 2020-04-07 09:58:54

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 392
积分: 336

Re: 学渣请教一个C语言 #, ## 宏语法的问题

还有展开的结果应该是PINCTRL_PIN(PB_BASE + 4, “PB4”)

离线

楼主 #5 2020-04-07 10:04:19

ubuntu
会员
注册时间: 2020-03-30
已发帖子: 276
积分: 254

Re: 学渣请教一个C语言 #, ## 宏语法的问题

shaoxi2010 说:

#把宏参数作为一个字符串,##用于宏参数贴合

原来如此

shaoxi2010 说:

还有展开的结果应该是PINCTRL_PIN(PB_BASE + 4, “PB4”)

看起来应该是这样了, 感谢大佬。

离线

#6 2020-04-07 11:39:30

k455619
会员
注册时间: 2018-07-29
已发帖子: 151
积分: 80

Re: 学渣请教一个C语言 #, ## 宏语法的问题

学习啦。

离线

#7 2020-04-09 00:50:51

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 583
积分: 587
个人网站

Re: 学渣请教一个C语言 #, ## 宏语法的问题

学习了。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn