printf函数重构
时间: 2023-10-05 07:05:38 浏览: 81
引用和提供了两种重构printf函数的方法。
方法一:在引用中,通过定义函数Sprintf来实现重构。该函数在串口上输出字符串,使用了stdarg.h头文件中的va_list和vsnprintf函数。函数的参数包括一个格式字符串format和可变参数列表。函数内部使用va_start宏来初始化参数列表,vsnprintf函数将格式化后的字符串存储在一个静态字符数组中,后使用va_end宏结束参数列表。然后通过循环将字符逐个发送到USART3寄存器中。
方法二:在引用中,通过定义函数reprintf来实现重构。该函数使用了自定义的宏来处理参数列表。在宏定义中,reva_list被定义为char*类型,reva_start宏用于初始化参数列表,reva_arg宏用于获取每个参数的地址,reva_end宏用于结束参数列表。在函数内部,可以使用这些宏来遍历参数列表并处理格式化输出。
根据你的需求和具体的环境,你可以选择其中一种方法来重构printf函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [STM32 重构printf函数](https://blog.csdn.net/qq_20999867/article/details/100076134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C语言可变参数函数实现原理解析 - 重写printf](https://blog.csdn.net/loveliyuyuan/article/details/102516656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文