C宏 - 操作员粘贴?

Joe*_*Cox 0 c c-preprocessor

是否可以使用宏来粘贴运算符?(类似于标记粘贴但与实际操作符相关.

例:

#define DO(a, operator, b) a ##operator b

DO(1, +, 3); // 4
DO(4, <<, 1); // 8
Run Code Online (Sandbox Code Playgroud)

注意 - 这是一个非常简单的例子.我的实际用例是我正在研究一种有很多位移操作的算法,我希望能够将我需要的移位运算符传递给宏(>><<)以使事情变得更简单.

The*_*ant 5

为什么不简单

#define DO(a, operator, b) ((a) operator (b))
Run Code Online (Sandbox Code Playgroud)

?(还添加了一些安全括号.)