我尝试了以下语法来定义宏:
#define SETBIT(ADDRESS,BIT,NEG) #if NEG \
(ADDRESS &= ~(1<<BIT)) \
#else \
(ADDRESS |= (1<<BIT)) \
#endif
使用:
#define LED1 PORTA,1,1 \\ LED with anode to Vcc
#define LED2 PORTA,1,0 \\ LED with anode to GND
SETBIT(LED1) \\ resulting in bit clear
SETBIT(LED2) \\ resulting in bit set
我希望明确的要点是:我只想在一个地方指定端口极性,并使代码更具可读性和可扩展性。
然而,GCC编译器抱怨它:
ipt.h:1:错误:'#'后面没有宏参数(第30列)
我发现宏定义中不允许使用#if
。
如何使用指定的函数声明宏?
答案 0 :(得分:1)
尝试这样的事情:
#define SETBIT(ADDRESS,BIT,NEG) \
if (NEG) \
(ADDRESS &= ~(1<<BIT)); \
else \
(ADDRESS |= (1<<BIT));