gpt4 book ai didi

c - 预处理器不使用定义的散列值,而是使用宏的定义字符串

转载 作者:行者123 更新时间:2023-11-30 17:49:55 24 4
gpt4 key购买 nike

我正在尝试一种简单的方法来定义我的 IO。我试图用宏来做到这一点,但无法解决这个问题。

我这样做了:

// Buzzer PORT and PIN mapping
#define BUZZER_PORT B // PORT
#define BUZZER_PIN 2 // PCR pin
#define BUZZER_ALT 1 // Pin alternativne function

#define INIT_BUZZER(PORTX, PIN, ALT) { PORT##PORTX##_PCR(PIN) = PORT_PCR_MUX((ALT)) | PORT_PCR_DSE_MASK; GPIO##PORTX##_PDDR |= PIN<<1; }

函数调用工作:

INIT_BUZZER(B, BUZZER_PIN, BUZZER_ALT);

需要的函数调用:

INIT_BUZZER(BUZZER_PORT, BUZZER_PIN, BUZZER_ALT);

如果我使用端口参数 BUZZER_PORT 调用它,则会收到错误,因为编译器不采用我的参数值,而是采用字符串本身。

如何处理这个问题?

最佳答案

尽可能使用括号。

尝试以下:INIT_BUZZER((BUZZER_PORT)、BUZZER_PIN、BUZZER_ALT);

关于c - 预处理器不使用定义的散列值,而是使用宏的定义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17559493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com