3

我在一个库中有一个函数,它接受消息和可变参数并像 printf 一样打印它们。例如:

printMe(const char *fmt,...);

我正在尝试包装此功能。我不知道参数类型和计数是什么。我试图这样做:

printMeWrapper(const char *message,...)
{
    va_list argptr;
    va_start(argptr, message);
    printMe( message,argptr);
    va_end(argptr);
}

但这只会打印第一个参数。关于如何正确执行此操作的任何想法?

4

2 回答 2

3

您必须创建第二个printMe带有va_list参数的函数,就像有printfand vprintf

void printMeVa(const char *fmt, va_list va)
{
    ...
}
于 2013-02-13T10:04:39.047 回答
1

您可以改用宏:

#define printMeWrapper(message, ...) \
  DoSmthBefore(); \
  printMe(message, __VA_ARGS__); \
  DoSmthAfter();
于 2013-02-13T13:14:43.310 回答