宏定义方式封装:
#define TRACE(fmt, ...) printf(fmt, __VA_ARGS__)
函数方式封装:
void printf_wrapperV(const char* format, va_list args_list) { vprintf(format, args_list); } void printf_wrapper(const char* format, ...) { va_list marker; va_start(marker, format); printf_wrapperV(format, marker); va_end(marker); }
学习关键字:va_list, _cdecl,为什么printf只能用_cdecl调用约定