当我尝试制作这样的宏时,问题就来了:
#define OP1(a,b,op) (a) op (b)
然后我想知道为什么不将op放在括号中,因为它也是一个宏参数。
然后我发现我什至不能拥有这个:
1 (+) 1;
否则会出现错误:
error: expected primary-expression before ')' token
谁能告诉我说运算符不能放在括号中的规则在哪里?我真的找不到它。谢谢。
最佳答案
第7.6.6节(expr.add)将“附加表达式”定义为:
additive-expression:
multiplicative-expression
additive-expression + multiplicative-expression
additive-expression - multiplicative-expression
不允许在运算符周围添加任何内容。