C 宏不递归。所以你将不得不做一些手工工作。
找出 LOGG 将采用和使用的最大参数数,如下所示:我的示例最多采用 6 个参数。
#define ENCODE0(x) AnsiString(x)
#define ENCODE1(x,...) AnsiString(x), ENCODE0(__VA_ARGS__)
#define ENCODE2(x,...) AnsiString(x), ENCODE1(__VA_ARGS__)
#define ENCODE3(x,...) AnsiString(x), ENCODE2(__VA_ARGS__)
#define ENCODE4(x,...) AnsiString(x), ENCODE3(__VA_ARGS__)
#define ENCODE5(x,...) AnsiString(x), ENCODE4(__VA_ARGS__)
#define ENCODE6(x,...) AnsiString(x), ENCODE5(__VA_ARGS__)
//Add more pairs if required. 6 is the upper limit in this case.
#define ENCODE(i,...) ENCODE##i(__VA_ARGS__) //i is the number of arguments (max 6 in this case)
#define LOGG(count,...) OTHER_LIB_LOG(ENCODE(count,__VA_ARGS__))
样品用法:LOGG(5,"Hello","Hi","Namaste _/\_","Hola!","bonjour");