2010-06-20 55 views
0

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

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

当我只使用一个参数进行函数调用时,一切都可以,但我需要更多。我看着它推动通过不同的宏定义做这样的事情,这样的:

#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

为什么你需要这个吗?为什么不直接使用模板化函数,而不使用宏? – doublep 2010-06-20 22:08:56

+0

@doublep,因为调用更大,占用更多的地方。我在这里简化了它。 – Ockonal 2010-06-20 22:20:42

回答

2

只有这样,才能做到这一点我们在宏definations __VA__ARGS__,然而,它不那么容易移植,怎么一回事,因为旧的编译器像VC6不支持无功arg'ed宏,请参阅: MSVC GCC

+0

我不担心VC6:它不支持C++。 – 2010-06-20 22:29:22

+0

它支持C++(我将它用于传统开发),你不能太过于模板和宏,再加上你需要使用更好的STL,VC6的一个(正如朋友所描述的)是艾滋病 – Necrolis 2010-06-20 22:44:44