平常写代码时,需要一个简单的打印开关,如下即可
#ifdef DEBUG
#define log_debug(...) printf(__VA_ARGS__)
#else
#define log_debug(...)
#endif
但如果要加入"debug","error"等前缀呢,这样
(windos可用,linux不可用)
#define log_debug(...) printf("debug "##__VA_ARGS__)
#define log_error(...) printf("error "##__VA_ARGS__)
如果不使用宏,使用函数的话,下面这样即可,但第一个参数必须const char*类型。
void va_print(const char *fmt,...)
{
va_list args;
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
}
使用函数有什么好处呢,可以当作回调函数用,如下
typedef void (*print_t)(const char *fmt,...);
int main()
{
print_t p = va_print;
p("hello %s\n","world");
return 0;
}