Макросы с несколькими скобками - PullRequest
2 голосов
/ 23 апреля 2011

Как я могу создать макрос с несколькими скобками?Мне не нужно переменное число аргументов, я просто хочу, чтобы мой макрос вызывался как.

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 ]

4 голосов
/ 23 апреля 2011
#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 голос
/ 23 апреля 2011
#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;
}
...