Я знаю, что могу это сделать:
#define MACRO(api, ...) \
bool ret = api(123, ##__VA_ARGS__);
Это просто пример, это часть более сложного решения. Дело в том, что мне нужно добавить переменное число аргументов в первые 123. ## заставляет компилятор вычеркивать запятую после аргумента 123, если в MACRO не были переданы аргументы.
Но теперь я хочу добавить аргументы в api, например:
#define MACRO(api, ...) \
bool ret = api(__VA_ARGS__##, 456);
Нокандо. Одно из решений состоит в том, чтобы иметь два макроса, MACRO и MACRO_V, скажем, и сделать версию _V не обрабатывать какие-либо аргументы. Но есть ли способ заставить его работать с одним макросом?