c - 在 C 中使用详细选项进行编程

标签 c

有人知道如何使用详细选项(选择是否打印消息的选项)以一种很好的方式用 C 语言编写程序吗?

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

有没有更优雅的解决方案?

最佳答案

只需使用(可变的)宏/可变参数函数在调用 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)

关于c - 在 C 中使用详细选项进行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017272/

相关文章:

c - 为什么有人会在 C 中使用这种类型的转换? float 的引用被强制转换为 int 指针,然后取消引用

将列表转换为结构

c# - PInvoke 编码返回字符串数组 C#

c - 如何阅读 GUID 分区表 (GPT) 及其条目?

无法弄清楚这段递归代码的含义

c - 这些分配之间是否有顺序点?

c - 在线扫描单个字 (C)

c - 使用浮点二进制的算术运算 "0b"

c - pthread_self 返回不同的值

c++ - 编译C程序时出错,该程序调用在头文件中声明并在单独的cpp文件中定义的C++函数