使用C语言中的详细选项进行编程

时间:2012-04-04 18:37:14

标签: c

有人知道如何使用详细选项(选择是否打印消息的选项)以C语言编写程序。

我的意思是,不要在代码中为每个printf写一个if(详细)。

有更优雅的解决方案吗?

3 个答案:

答案 0 :(得分:9)

只需使用(variadic)宏/ vararg函数在调用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 example

#define eprintf(format, ...) do {                 \
    if (ok_to_print)                              \
        fprintf(stderr, format, ##__VA_ARGS__);   \
} while(0)

答案 1 :(得分:3)

创建一个函数指针数组

print_function_type fx[2] = {quietprint, verboseprint};

而不是在打印时使用if,使用数组的正确元素

// if verbosemode is 0 call quietprint
// if verbosemode is 1 call verboseprint
fx[verbosemode]("%d", foo);

答案 2 :(得分:0)

您可以编写自己的类似printf的函数来检查详细标记,然后在必要时调用printf。