gpt4 book ai didi

在重新定义 printf 的宏中将字符连接到 __VA_ARGS__

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:36 24 4
gpt4 key购买 nike

我正在开发一个嵌入式应用程序,它使用一个库来连接 SPI NAND 内存芯片。提供的库使用打印功能,作为应用程序开发人员,我必须针对我的特定平台覆盖该功能。

例如,他们在代码中广泛使用函数 printf_

我这样重新定义它,让打印功能通过串行接口(interface)打印

#define printf_(...) serial.printf(__VA_ARGS__)

它工作正常,除了在此平台上,您需要为换行符提供回车符 ("\r")。所以现在,当调用库时,格式很糟糕。

我想在提供给打印函数的任何内容的末尾附加一个“\r”。喜欢

#define printf_(...) serial.printf(__VA_ARGS__##"\r")

显然那是行不通的。

我真的不熟悉,并且很难理解 C 中的可变参数函数,所以如果我能解决这个问题,这将为我提供一点学习机会,或者至少我会学习如果这是不可能。

我也不能只使用 va_listvsprintf 包装函数,因为我的平台不支持这个(我宁愿在宏中重新定义它,作为个人的性能/风格选择)。

有办法吗?

最佳答案

也许你可以在调用 serial.printf 之后输出 '\r'

#define printf_(...) do { serial.printf(__VA_ARGS__); serial.printf("\r"); } while(0)

关于在重新定义 printf 的宏中将字符连接到 __VA_ARGS__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47723957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com