小编Øyv*_*eig的帖子

如何在宏中将可变参数与 printf 一起使用?

我发现无法将第一个 printf 合并到第二个:

unsigned get_time_now(void) {return 1;}
#define DEBUG_PRINT 1
#define debug_tcprintf(fmt, ...) do { \
            if (DEBUG_PRINT) { \
                unsigned p_time_now = get_time_now(); \
                printf ("%u ms ", p_time_now); \
                printf(fmt, __VA_ARGS__); \
            } \
        } while (0)
Run Code Online (Sandbox Code Playgroud)

我需要完成此操作才能获得原子 debug_tcprintf。上面的宏取自这个 Stack Overflow 问题

我正在 XC 中编写在 XMOS 多逻辑核心处理器上运行的代码。它编译 XC、C 和 C++,但代码示例来自 C 代码部分。除了它有一个用语言定义的计时器之外,它与 XC 类似。

如果不可能将两者合并到一个 printf 中,一个选项可能是创建一个字符串并使用 sprintf 代替?我宁愿不这样做,因为这样的数组可能很容易溢出。

c printf c-preprocessor variadic-macros

6
推荐指数
1
解决办法
1453
查看次数

标签 统计

c ×1

c-preprocessor ×1

printf ×1

variadic-macros ×1