Mặc dù bạn có thể giải quyết việc chuyển định dạng bằng cách lưu trữ nó trong bộ đệm cục bộ trước, nhưng điều đó cần ngăn xếp và đôi khi có thể là vấn đề cần giải quyết. Tôi đã thử làm theo và nó có vẻ hoạt động tốt.
#include <stdarg.h>
#include <stdio.h>
void print(char const* fmt, ...)
{
va_list arg;
va_start(arg, fmt);
vprintf(fmt, arg);
va_end(arg);
}
void printFormatted(char const* fmt, va_list arg)
{
vprintf(fmt, arg);
}
void showLog(int mdl, char const* type, ...)
{
print("\nMDL: %d, TYPE: %s", mdl, type);
va_list arg;
va_start(arg, type);
char const* fmt = va_arg(arg, char const*);
printFormatted(fmt, arg);
va_end(arg);
}
int main()
{
int x = 3, y = 6;
showLog(1, "INF, ", "Value = %d, %d Looks Good! %s", x, y, "Infact Awesome!!");
showLog(1, "ERR");
}
Hi vọng điêu nay co ich.