引数を使用しないが、使用される定義済みの整数と文字列を持つマクロを作成したいと考えています。
引数を持つマクロに似たものについて以前に尋ねましたが、これがその方法です:
#define BUZZER_PIN 1
#define BUZZER_PORT B
#define BUZZER_ALT 1
#define INIT_BUZZER_(PORTX, PIN, ALT) \
do { \
PORT##PORTX##_PCR(PIN) = PORT_PCR_MUX(ALT) | PORT_PCR_DSE_MASK; \
GPIO##PORTX##_PDDR |= (PIN)<<1; \
} while (0)
#define INIT_BUZZER(PORTX, PIN, ALT) \
INIT_BUZZER_(PORTX, PIN, ALT)
INIT_BUZZER
しかし、それを参照して上記のすべてを実行したいだけの場合はどうなりINIT_BUZZER_
ますか?
私がしようとしました:
#define INIT_BUZZER INIT_BUZZER_(BUZZER_PORT, BUZZER_PIN, BUZZER_ALT)
私はいつも文字列だけに問題があり、その部分がよくわかりません。このように呼び出すと、値としてではなくBUZZER_PORT
文字列として処理されますBUZZER_PORT
=B