GZZXB 发表于 2013-10-29 21:55:17

这个宏只定义了一个形参,为什么可以传两个实参?

本帖最后由 GZZXB 于 2013-10-30 21:29 编辑



图中 #define PORT_PIN_SET(pinspec)   为何可以传入B,3?

macaroni 发表于 2013-10-30 09:02:14

对于顶层宏 B,3 就是一个形参~

macaroni 发表于 2013-10-30 09:04:35

这个形参被传递给 连个子宏~

luweixuan 发表于 2013-10-30 19:50:26

你把宏看作一个指定字符的替代。所以你把这个你要的参数替代到里面展开就可以了。这个里面涉及到两次替换。你从上面开始替换就简单点。

yiminglei 发表于 2013-10-30 20:40:01

妙~~~~~~~~~~~~~

GZZXB 发表于 2013-10-30 21:15:07

因为在一些c书中没有找到对该宏的描述,加上在合泰单片机上编译不过。让我以为不是标准c支持的宏了。

GZZXB 发表于 2013-10-30 21:16:44

有了这个宏的支持确实是对跨平台的io移植方便了很多。基本上只要改一点点了

moment 发表于 2015-11-5 19:07:22

本帖最后由 moment 于 2015-11-5 19:09 编辑

这个写法太高明了,已经分享给我的同事,同时帮顶。

淋湿的鸡毛 发表于 2015-11-5 21:20:32

avr的那本书吧,已经用在代码里了

istars2005 发表于 2015-11-6 19:53:37

看明白了,但是在IAR里面一直提示语法错误
楼上的几位能不能详细说一下实现过程

机器人天空 发表于 2015-11-6 22:21:15

淋湿的鸡毛 发表于 2015-11-5 21:20
avr的那本书吧,已经用在代码里了

哪本书,我想看{:lol:}

liaihua1997 发表于 2015-11-6 22:39:47

没看明白,再讲一下,

淋湿的鸡毛 发表于 2015-11-7 15:45:02

机器人天空 发表于 2015-11-6 22:21
哪本书,我想看

邵子阳,单片机应用专题讲解,你搜下

机器人天空 发表于 2015-11-7 22:07:04

淋湿的鸡毛 发表于 2015-11-7 15:45
邵子阳,单片机应用专题讲解,你搜下

三克油{:lol:}

我是一个大白菜 发表于 2020-10-13 09:37:58

这个宏的使用有一点不太明白,输入的是B, 怎么最后变成DDRB 或者 PORTB 了?

wochai 发表于 2020-10-13 10:38:02

我是一个大白菜 发表于 2020-10-13 09:37
这个宏的使用有一点不太明白,输入的是B, 怎么最后变成DDRB 或者 PORTB 了? ...

应该是漏掉这个定义
#define UTIL_CONCAT_EXPANDED(a, b)         a ## b

我是一个大白菜 发表于 2020-10-13 10:42:11

wochai 发表于 2020-10-13 10:38
应该是漏掉这个定义
#define UTIL_CONCAT_EXPANDED(a, b)         a ## b

哦,那这样就理解了,谢谢指点{:lol:}
页: [1]
查看完整版本: 这个宏只定义了一个形参,为什么可以传两个实参?