带有多个括号的宏

时间:2011-04-23 12:09:17

标签: c++ macros c-preprocessor

如何创建包含多个括号的宏?我不需要变量数量的参数,我只是希望能够调用我的宏。

MY_MACRO(arg0, arg1)(arg2) 

...而不是:

MY_MACRO(arg0, arg1, arg2) 

更新

我们说我有一个定义的宏; #define MY_MACRO(a, b, c) (a*b/c)并调用MY_MACRO(1,2,3)。如何将此宏转换为MY_MACRO(1, 2)(3)

之类的调用

即,我想要做的就是像往常一样编写我的宏,只将最后一个参数放在它自己的括号中。

2 个答案:

答案 0 :(得分:4)

#define MY_MACRO(a, b) a, b, MY_MACRO1
#define MY_MACRO1(c) c

现在正在做

MY_MACRO(arg0, arg1)(arg2)

会做什么

MY_MACRO(arg0, arg1)(arg2)
a, b, MY_MACRO1 (arg2)
arg0, arg1, MY_MACRO1 (arg2)
arg0, arg1, c
arg0, arg1, arg2

答案 1 :(得分:1)

#include <iostream>
using namespace std;

#define MY_MACRO(a, b) (a * b)/ MY_MACRO1
#define MY_MACRO1(c) c

int main() {
    int n = MY_MACRO( 5,6)(3);
    cout << n << endl;
}