Макрос с количеством аргументов и параметром по умолчанию - PullRequest
0 голосов
/ 19 апреля 2020

Я знаком с следующим способом создания макроса с переменным числом аргументов. Однако учтите:

#define MY_MACRO_N(value, format, ...) my_func(value, format, ##__VA_ARGS__)
#define MY_MACRO_0(value) my_func(value, NULL)

Где my_func также принимает переменное число аргументов. Как я могу создать макрос MY_MACRO, который инкапсулирует оба, так что:

MY_MACRO(my_value);  // expand to my_func(my_value, NULL);
MY_MACRO(my_value, my_format);  // expand to my_func(my_value, my_format);
MY_MACRO(my_value, my_format, a, b);  // expand to my_func(my_value, my_format, a, b);
MY_MACRO();  // invalid

Переменное число аргументов нарушает подход GET_MACRO, однако, похоже, должен быть способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...