Количество аргументов в определении макроса - PullRequest
0 голосов
/ 21 июня 2010

У меня есть некоторая шаблонная функция, которая имеет разное количество аргументов из-за типа шаблона Эта функция заключена в определение макроса.

#define SomeTemplate(TemplateType, Arguments) someFunc<TemplateType>(Arguments);

Все нормально, когда я использую только один аргумент для вызова функции, но мне нужно больше. Я посмотрел на boost, он делает такие вещи через определение различных макросов, например:

#define TEMP_1(Arg1) someFunc<Template>(Arg1);
#define TEMP_2(Arg1, Arg2) someFunc<Template>(Arg1, Arg2);
#define TEMP_3(Arg1, Arg2, Arg3) someFunc<Template>(Arg1, Arg2, Arg3);

Но этот код помечен как переносимый для компиляторов. Есть способ использовать некоторые определения с любым количеством аргументов. Как я могу это сделать?

1 Ответ

2 голосов
/ 21 июня 2010

единственный способ сделать это, используя __VA__ARGS__ в определениях макросов, однако он не такой переносимый, поскольку более старые компиляторы, такие как VC6, не поддерживают макросы var arg, см. MSVC НКУ

...