我想制作一个不使用参数但使用预定义整数和字符串的宏。
我之前问过与宏类似的东西,它有参数,它是这样的:
#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