您好我使用C宏时遇到问题,并且想知道是否有人可以提供帮助:
#define A7 PORTA,7
#define SET_BIT(x,y) x=x|(1<<y)
我正在尝试设置宏,这样在主代码中,我只需输入
即可SET_BIT(A7); to set the 7th bit of A7
但是,我收到以下错误:
warning C4003: not enough actual parameters for macro 'SET_BIT'
error C2106: '=' : left operand must be l-value
error C2059: syntax error : ')'
任何帮助都将不胜感激。
答案 0 :(得分:0)
您也可以通过使用中间宏来执行您想要的方式,该宏将参数扩展为由昏迷分隔的两个参数。
#define A7 PORTA,7
#define SET_BIT_INNER(x,y) x=(x)|(1<<(y))
#define SET_BIT(x) SET_BIT_INNER(x)
SET_BIT(A7);
正如valter所说,不要忘记宏中使用的每个参数的括号。
答案 1 :(得分:-1)
#define A7 PORTA
#define SET_BIT(x,y) (x)=(x)|(1<<(y))
SET_BIT(A7,7);