#define LED1_ON() { /* twiddle port bit */ }
#define LED2_ON() { /* twiddle port bit */ }
// ...
#define LED9_ON() { /* twiddle port bit */ }
#define LED_ON(x) LED##x_ON()
我想使用上面的代码(或类似的代码)让(例如)LED_ON(1)
调用宏 LED1_ON()
,或 LED_ON(2)
调用宏 LED2_ON()
。
我相信可以让 cpp 执行此操作,但显然我的语法不正确。有谁知道使这成为可能的语法?
在我调用 LED_ON(2)
的那一行,gcc 给出了错误信息:
undefined reference to `LEDx_ON'
最佳答案
您需要将LED_ON
定义为
#define LED_ON(x) LED##x##_ON()
您想采用参数 x
并粘贴到 LED
前缀和 _ON
后缀。
关于c - 预处理器宏替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19505890/