【问题标题】:Combine macro definition in order to obtain multiple definition at once [avr C++]组合宏定义以便一次获得多个定义 [avr C++]
【发布时间】: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° 问题:如果是这样,获得它的正确和最佳方法是什么?

提前感谢您的帮助!

【问题讨论】:

  • 不,你不能让一个宏定义其他宏。而且您希望尽可能避免使用宏,我相信这里就是这种情况。

标签: c++ macros avr


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-28
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多