我想要一个宏来检测传递的参数是否被括号括起来,如果是的话就调用不同的宏。
例如
#define FOO(obj) BAR obj
#define BAR(...) func(__VA_ARGS__)
#define BAR
如果我用 调用它,FOO((1, 2, 3))
它会扩展为func(1, 2, 3)
。但如果我用 调用它,FOO(1)
它会扩展为1
我知道 C 中没有宏重载,但我想知道是否有其他方法可以实现此行为FOO
。我研究了几种宏技巧,但找不到方法来实现这一点。
我正在研究一个宏库并且需要这种精确的行为。