结合宏定义以便一次获得多个定义[avr C ++]

时间:2018-03-10 18:27:50

标签: c++ macros avr

很抱歉我对预处理代码和宏定义缺乏了解,但我正在尝试使用#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°问题:如果是这样,获得它的最佳方法是什么?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

嗨,你不能在C ++或C中这样做。在C ++中为了避免这种宏定义及其在编译期间的扩展,它引入了更容易使用的内联方法。更好地使用内联方法而不是C ++中的宏。