我发现无法将第一个 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 代替?我宁愿不这样做,因为这样的数组可能很容易溢出。