我在lib中有一个函数,它接收一个消息和可变参数,并像printf一样打印它们。 例如:
printMe(const char *fmt,...);
我正在尝试包装此功能。我不知道参数类型和计数是什么。 我试着这样做:
printMeWrapper(const char *message,...)
{
va_list argptr;
va_start(argptr, message);
printMe( message,argptr);
va_end(argptr);
}
但这只打印第一个参数。关于如何正确地做到这一点的任何想法?
答案 0 :(得分:3)
您必须使用printMe
参数创建第二个va_list
函数,就像printf
和vprintf
一样:
void printMeVa(const char *fmt, va_list va)
{
...
}
答案 1 :(得分:1)
您可以使用宏来代替:
#define printMeWrapper(message, ...) \
DoSmthBefore(); \
printMe(message, __VA_ARGS__); \
DoSmthAfter();