当我尝试制作这样的宏时,问题就来了:

#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


不允许在运算符周围添加任何内容。

10-02 01:17
查看更多