很抱歉我对预处理代码和宏定义缺乏了解,但我正在尝试使用#define宏来提高我的avr代码的效率。 我想开发一个驱动程序来管理1线数字温度计。我的目的是获得一个在我的avr库中重用的端口和引脚寄存器的初步定义,我想通过宏来制作所有这些预备定义。我会更好地解释一下:
我想要一个像这样的定义函数:
#define (port, pin)
并使用端口和引脚参数来定义其他基本宏,如:
#define DRIVER_PORT PORT##port
#define DRIVER_PIN PIN##port##pin
#define DRIVER_DDR DDR##port
因此,从现在开始,我可以使用值DRIVER_PORT来管理输入/输出/高z端口引脚,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°问题:如果是这样,获得它的最佳方法是什么?
提前感谢您的帮助!
答案 0 :(得分:0)
嗨,你不能在C ++或C中这样做。在C ++中为了避免这种宏定义及其在编译期间的扩展,它引入了更容易使用的内联方法。更好地使用内联方法而不是C ++中的宏。