有人知道如何用详细的选项(选择是否打印消息的选项)以一种很好的方式用 C 语言编写程序。
我的意思是,不要为代码中的每个 printf 编写 if(verbose) 。
有没有更优雅的解决方案?
有人知道如何用详细的选项(选择是否打印消息的选项)以一种很好的方式用 C 语言编写程序。
我的意思是,不要为代码中的每个 printf 编写 if(verbose) 。
有没有更优雅的解决方案?
在调用 vfprintf 之类的东西之前,只需使用一个(可变参数)宏/可变参数函数来测试一个标志。
/* Crude example. */
void my_log(char *format, ...)
{
va_list args;
if (!ok_to_log)
return;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
稍微修改一下gnu 示例怎么样:
#define eprintf(format, ...) do { \
if (ok_to_print) \
fprintf(stderr, format, ##__VA_ARGS__); \
} while(0)
创建一个函数指针数组
print_function_type fx[2] = {quietprint, verboseprint};
而不是在打印时使用 if ,而是使用数组的正确元素
// if verbosemode is 0 call quietprint
// if verbosemode is 1 call verboseprint
fx[verbosemode]("%d", foo);
您可以编写自己的类似 printf 的函数来检查详细标志,然后在必要时调用 printf。