私はそのように定義されたビットフィールドを持っています (これはマイクロコントローラライブラリからのものなので、少し異なって見えます):
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のライブラリのようなことをしたいからです. 私が好む方法でそれを行う方法を知っている人はいますか?