【发布时间】:2018-03-10 18:27:50
【问题描述】:
抱歉,我缺乏关于预处理代码和宏定义的知识,但我正在尝试使用#define 宏来提高我的 avr 代码的效率。 我想开发一个驱动程序来管理 1-wire 数字温度计。我的目的是获得端口和引脚寄存器的初步定义,以便在我的 avr 库中重用,我想通过宏进行所有这些初步定义。我会解释得更好:
我想要一个这样的定义函数:
#define (port, pin)
并使用端口和引脚参数来定义其他基本宏,例如:
#define DRIVER_PORT PORT##port
#define DRIVER_PIN PIN##port##pin
#define DRIVER_DDR DDR##port
所以,从这里开始,我可以使用值 DRIVER_PORT 来管理输入/输出/高阻抗端口引脚,使用 DRIVER_PIN 来读取端口值等等......
谷歌搜索,我已经生成了这个无效的代码:
[...]
#define define_pin(port,pin) { \
#define DRIVER_PORT PORT##port \
#define DRIVER_PIN PIN##port##pin \
#define DRIVER_PINR PIN##port \
#define DRIVER_DDR DDR##port \
}
[...]
1°问题:有没有可能得到我所追求的? 2° 问题:如果是这样,获得它的正确和最佳方法是什么?
提前感谢您的帮助!
【问题讨论】:
-
不,你不能让一个宏定义其他宏。而且您希望尽可能避免使用宏,我相信这里就是这种情况。