我有這樣的定義(這是從微控制器庫,所以它看起來有點不同)位字段: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的庫。任何人都有想法如何以我喜歡的方式做到這一點?
是的,這就是我第一次做的。不幸的是,這個宏在嵌入式系統中的使用是有限的。但是,一個好主意! –
限於什麼意義? –