В дополнение к __VA_ARGS __

Я знаю, что могу это сделать:

#define MACRO(api, ...) \
  bool ret = api(123, ##__VA_ARGS__);

Это просто пример, это часть более сложного решения. Дело в том, что мне нужно добавить переменное количество аргументов к первым 123. ## заставляет компилятор удалять запятую после аргумента 123, если в MACRO не было передано никаких аргументов.

Но теперь я хочу добавить аргументы в api, например:

#define MACRO(api, ...) \
  bool ret = api(__VA_ARGS__##, 456);

Nocando. Одно из решений - иметь два макроса, скажем, MACRO и MACRO_V, и сделать так, чтобы версия _V не обрабатывала никакие аргументы. Но есть ли способ заставить его работать с одним макросом?

13
задан a3f 30 March 2015 в 13:29
поделиться