tags:

views:

19

answers:

1

I know I can do this:

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

This is just an example, it's part of a more complicated solution. The point is that I need to append the variable number of arguments to the first 123. The ## makes the compiler strip out the comma after the 123 argument if no arguments were passed into MACRO.

But now I want to append arguments to api, like so:

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

Nocando. One solution is to have two macros, MACRO and MACRO_V, say, and make the _V version not process any arguments. But is there a way to make it work with one macro?