是否可以使用递归宏来编写所需数量的函数参数。例如:
void foo( const char (&row1)[3] , const char (&row2)[3] , const char (&row3)[3] )
{
}
void foo( const char (&row1)[3] , const char (&row2)[3] , const char (&row3)[3] , const char (&row4)[3] , const char (&row5)[3] , const char (&row6)[3] )
{
}
我知道引入了可变参数模板来解决这样的问题,但我仅限于C ++ 98 ATM。
答案 0 :(得分:5)
您可以查看boost::preprocessor库,它为您提供了一个完整的预处理工具包。它提供了预处理器元编程工具,包括重复和递归。
您可以在this answer中看到一个示例。
答案 1 :(得分:0)
宏不能递归,因为宏扩展在扩展过程中不会扩展宏的名称。 C ++ 11确实使用__VA_ARGS__
引入了具有可变数量参数的宏的概念,但我不太了解它。 (我使用很少的宏。)
答案 2 :(得分:0)
传统上,开发人员会创建一组宏,每个宏都有不同数量的参数:
#define foo1(arg1)
#define foo2(arg1, arg2)
#define foo3(arg1, arg2, arg3)
...