这个宏只定义了一个形参,为什么可以传两个实参?
本帖最后由 GZZXB 于 2013-10-30 21:29 编辑图中 #define PORT_PIN_SET(pinspec) 为何可以传入B,3?
对于顶层宏 B,3 就是一个形参~
这个形参被传递给 连个子宏~ 你把宏看作一个指定字符的替代。所以你把这个你要的参数替代到里面展开就可以了。这个里面涉及到两次替换。你从上面开始替换就简单点。 妙~~~~~~~~~~~~~ 因为在一些c书中没有找到对该宏的描述,加上在合泰单片机上编译不过。让我以为不是标准c支持的宏了。 有了这个宏的支持确实是对跨平台的io移植方便了很多。基本上只要改一点点了 本帖最后由 moment 于 2015-11-5 19:09 编辑
这个写法太高明了,已经分享给我的同事,同时帮顶。 avr的那本书吧,已经用在代码里了 看明白了,但是在IAR里面一直提示语法错误
楼上的几位能不能详细说一下实现过程 淋湿的鸡毛 发表于 2015-11-5 21:20
avr的那本书吧,已经用在代码里了
哪本书,我想看{:lol:} 没看明白,再讲一下,
机器人天空 发表于 2015-11-6 22:21
哪本书,我想看
邵子阳,单片机应用专题讲解,你搜下 淋湿的鸡毛 发表于 2015-11-7 15:45
邵子阳,单片机应用专题讲解,你搜下
三克油{:lol:} 这个宏的使用有一点不太明白,输入的是B, 怎么最后变成DDRB 或者 PORTB 了? 我是一个大白菜 发表于 2020-10-13 09:37
这个宏的使用有一点不太明白,输入的是B, 怎么最后变成DDRB 或者 PORTB 了? ...
应该是漏掉这个定义
#define UTIL_CONCAT_EXPANDED(a, b) a ## b wochai 发表于 2020-10-13 10:38
应该是漏掉这个定义
#define UTIL_CONCAT_EXPANDED(a, b) a ## b
哦,那这样就理解了,谢谢指点{:lol:}
页:
[1]