2011-04-23 64 views
2

如何创建带多个括号的宏?我不需要可变数量的参数,我只是想能够像我一样调用我的宏。带多个括号的宏

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)

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

回答

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 
+0

嗯,所以,如果我原来的宏定义是'#定义MY_MACRO(A,B,C)(一* b/c)',我会在哪里,但在第二个版本的实际代码? – 2011-04-23 12:22:41

+0

@Viktor,我不明白。我以为你想要一个两个参数的宏。 – 2011-04-23 12:23:36

+0

对不起,如果我正在模糊,更新了问题 – 2011-04-23 12:26:54

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; 
} 
+0

如果代码是(a + c + b),即我想在另一个地方使用c参数而不是结尾? – 2011-04-23 21:57:12