C 宏 - 运算符粘贴?
C Macros - operator pasting?
是否可以使用宏来粘贴运算符? (类似于标记粘贴,但使用实际运算符。
示例:
#define DO(a, operator, b) a ##operator b
DO(1, +, 3); // 4
DO(4, <<, 1); // 8
注意 - 这是一个非常简化的示例。我的实际用例是我正在研究一种算法,其中发生了很多移位操作,我希望能够将我需要的移位运算符传递给宏(>>
或 <<
) 让事情变得更简单。
为什么不干脆
#define DO(a, operator, b) ((a) operator (b))
? (还添加了一些安全括号。)
是否可以使用宏来粘贴运算符? (类似于标记粘贴,但使用实际运算符。
示例:
#define DO(a, operator, b) a ##operator b
DO(1, +, 3); // 4
DO(4, <<, 1); // 8
注意 - 这是一个非常简化的示例。我的实际用例是我正在研究一种算法,其中发生了很多移位操作,我希望能够将我需要的移位运算符传递给宏(>>
或 <<
) 让事情变得更简单。
为什么不干脆
#define DO(a, operator, b) ((a) operator (b))
? (还添加了一些安全括号。)