C 宏 - 运算符粘贴?

标签 c c-preprocessor

是否可以使用宏来粘贴运算符? (类似于 token 粘贴,但使用实际的运算符。

例子:

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

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

注意 - 这是一个非常简化的示例。我的实际用例是我正在研究一种算法,其中发生了很多移位操作,我希望能够将我需要的移位运算符传递给宏( >><< )以保留东西简单一点。

最佳答案

为什么不简单

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

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

关于C 宏 - 运算符粘贴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28001506/

相关文章:

C++模板显式声明成员函数值/避免宏问题

macros - C 预处理器,递归宏

c - 单个静态对象库中的多个重复符号

c - 如何使用 C 程序读取和打印进入接口(interface)的 UDP 数据包的十六进制流?

C:在超时的阻塞套接字上等待 n 个字符

c++ - 为什么链接顺序会影响使用宏的测试的测试结果?

assembly - 如何在GNU ARM汇编程序中为寄存器赋予其他名称?

objective-c - 复杂的预处理器宏

c - 如何将以0开头的数字字符串转换为八进制数

c - 在 HP-UX 上使用 libunwind 并获取堆栈跟踪