C宏 - 操作员粘贴?

时间:2015-01-17 16:18:36

标签: c c-preprocessor

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

示例:

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

DO(1, +, 3); // 4
DO(4, <<, 1); // 8

注意 - 这是一个非常简化的例子。我的实际用例是我正在研究一种算法,其中发生了大量的位移操作,并且我希望能够将我需要的移位运算符传递给宏(>>或{ {1}})让事情变得更简单。

1 个答案:

答案 0 :(得分:5)

为什么不简单

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

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