【发布时间】:2021-02-21 16:59:15
【问题描述】:
我正在定义一个宏来通过 UART 打印一些调试,但我遇到了问题。编译器不喜欢我在 sprintf 语句中使用省略号:
#define LOG_INFO(_str, ...) { char * _buf[384] = {0}; sprintf(*_buf, _str, ...); UART2_Write((void*)_buf[0], sizeof(_buf)); }
结果...
../src/config/default/log_util.h:40:77: error: expected expression before '...' token
在 sprintf 语句中指明它的用途。我不知道我是不是解错了,或者这是编译器的限制,尽管据说编译器(XC32)可以处理这种事情。
对代码的任何更正或解决方法的建议将不胜感激。
【问题讨论】:
-
欢迎来到 StackOverflow!请使用tour 并阅读“How to Ask”。然后回来edit你的问题,展示你试图解决问题的方法。您是否查阅了预处理器的手册如何使用可变参数?
-
char * _buf[384];是一个由 384 个指向char的指针组成的数组。要拥有 384 个字符的缓冲区,请删除星号并使用char _buf[384];