说我想实现一个功能
void myprintf(const char* format, ...){
printf("Hello world!\n"),
printf(format, ...);
}
即。我想将varargs列表传递给printf。有没有方便的方法呢?
答案 0 :(得分:3)
没有。但是,printf
系列中的库函数提供vprintf
varaint,它接受va_list
作为参数而不是省略号。事实上,如果您正在编写自己的变量参数函数,那么提供这样的变体实际上是一种很好的做法。
你的包装器会是这样的:
void myprintf(const char* format, ...){
printf("Hello world!\n"),
va_list args;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
答案 1 :(得分:2)
在预处理器的帮助下:
#include <stdio.h>
#define myprintf(...) \
do { \
printf("Hello world!\n"), \
printf(__VA_ARGS__); \
} while (0)
int main(void)
{
myprintf("%s %d\n", "Hello", 1);
return 0;
}