0

我有一些模板化函数,由于模板类型,它具有不同数量的参数。这个函数是用宏定义包装的。

#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);

但是此代码标记为可移植的编译器。有办法使用带有任意数量参数的一些定义。我怎样才能做到这一点?

4

1 回答 1

2

我们在宏定义中使用的唯一方法__VA__ARGS__,但是,它不是可移植的,因为像 VC6 这样的旧编译器不支持 var arg'ed 宏,请参阅: MSVC GCC

于 2010-06-20T22:14:39.317 回答