如何创建包含多个括号的宏?我不需要变量数量的参数,我只是希望能够调用我的宏。
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)
即,我想要做的就是像往常一样编写我的宏,只将最后一个参数放在它自己的括号中。
答案 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;
}