【发布时间】:2010-06-20 21:38:35
【问题描述】:
我有一些模板函数,由于模板类型的不同,它有不同数量的参数。这个函数是用宏定义包装的。
#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);
但是这段代码被标记为可移植的编译器。有办法使用带有任意数量参数的一些定义。我该怎么做?
【问题讨论】:
-
你为什么需要这个?为什么不直接使用模板化函数,不使用宏?
-
@doublep 因为调用要大得多,占用的地方也多。我在这里简化了。
标签: c++ macros arguments c-preprocessor variadic-macros