首页 > 解决方案 > 宏的包含文件中使用的结构中的未知初始化程序

问题描述

我在用于 AVR MCU 的包含文件中发现了一个未知的初始化程序(在我看来)。附加一小组我不明白的宏。有人可以向我解释结构中的初始化程序是什么以及宏是如何工作的吗?

// Access bits like variables
struct bits {
  uint8_t b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1;
} __attribute__((__packed__));
#define SBIT_(port,pin) ((*(volatile struct bits*)&port).b##pin)
#define SBIT(x,y)       SBIT_(x,y)

// MCU related Port definition
#define PORT_B0     SBIT( PORTB, 0 )
#define MYPIN SBIT(PORT_B0)

// Usage in program
MYPIN = 1;  // will set Pin PB0 to 1 ( high )

我可以简单地使用这个不错的代码,但我想了解这里发生了什么。非常感谢任何提示。非常感谢

标签: structmacrosavrpreprocessorinitializer

解决方案


推荐阅读