我有这样的定义(这是从微控制器库,所以它看起来有点不同)位字段:C - 如何从位域接收一个位作为函数中的参数?
typedef union {
byte Byte;
struct {
byte PTAD0 :1;
byte PTAD1 :1;
byte PTAD2 :1;
byte PTAD3 :1;
byte PTAD4 :1;
byte PTAD5 :1;
byte :1;
byte :1;
} Bits;
} PTADSTR;
extern volatile PTADSTR _PTAD @0x00000000;
#define PTAD _PTAD.Byte
#define PTAD_PTAD0 _PTAD.Bits.PTAD0
#define PTAD_PTAD1 _PTAD.Bits.PTAD1
#define PTAD_PTAD2 _PTAD.Bits.PTAD2
#define PTAD_PTAD3 _PTAD.Bits.PTAD3
#define PTAD_PTAD4 _PTAD.Bits.PTAD4
#define PTAD_PTAD5 _PTAD.Bits.PTAD5
所以。比方说,我想要一个功能,设置一下,就像这样:
void setbit(bit Bit) {
Bit = 1;
}
当然,“位”声明不起作用。我想要一个声明,我可以使用
setbit(PTAD_PTAD5)
它会设置这一点。我可以做
void setbit(byte Byte, byte number) {
Byte |= 1<<(number);
}
和发送
setbit(PTAD,5);
完美的作品,不过...。那不是我想要的,因为我想这样做的Arduino的库。任何人都有想法如何以我喜欢的方式做到这一点?
是的,这就是我第一次做的。不幸的是,这个宏在嵌入式系统中的使用是有限的。但是,一个好主意! –
限于什么意义? –