【问题标题】:How can i use printf in a function with checking a variable?如何在检查变量的函数中使用 printf?
【发布时间】:2021-01-04 21:46:46
【问题描述】:

如果 OUT 为 1,我想打印输出。所以我认为该代码。

#define OUT 1

void d_printf(char *text){
  if(OUT)
    printf("%s", text);
}

int main(void){
  d_printf("%d\n", 5);
  return 0;
}

但我的参数是 char*,我无法发送 %d, 5。我该如何解决这个问题?

【问题讨论】:

  • 一种方法是更改​​d_printf 以接受可变长度参数,然后将它们直接传递给vprintf
  • 这能回答你的问题吗? Passing variable number of arguments around
  • 另一种解决方案是分配一个字符串缓冲区,使用snprintf 在该缓冲区中创建一个具有所需输出的字符串,然后将该缓冲区传递给d_printf

标签: c formatting


【解决方案1】:

你可以使用一个简单的宏:

#include <stdio.h>

#define OUT 1

#define d_printf  OUT && printf

int main(void) {
    d_printf("%d\n", 5);
    return 0;
}

如果您收到有关未使用表达式的编译器警告,您可以使用更精细的宏:

#include <stdio.h>

#define OUT 1

#define d_printf(...)  do { if (OUT) printf(__VA_ARGS__); } while(0)

int main(void) {
    d_printf("%d\n", 5);
    return 0;
}

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2020-03-23
    • 1970-01-01
    • 2011-10-25
    • 2019-10-28
    • 2017-03-24
    相关资源
    最近更新 更多