- 直接贴代码以及解释如下:
#include <stdio.h>
#include <stdarg.h>
#define size 256
char buffer[size];
int uprintf(const char *f, ...)
{
int i = 0;
va_list arg_ptr;
va_start(arg_ptr, f);
vsnprintf(buffer, size, f, arg_ptr);
// vsprintf(buffer, f, arg_ptr);
va_end(arg_ptr);
while(buffer[i])
{
transmit_char(buffer[i]);
i++;
}
return i;
}
int var = 10;
uprintf("%d", var);
- 生成代码大小问题
实际应用中发现,编译未进行优化,实际生成的代码大小增大8~9k。建议调试时候使用。
可定义个宏来控制开关,参考代码如下:
#define DEBUG_UPRINT 1
int uprintf(const char *f, ...)
{
#if DEBUG_UPRINT
#else
return 0;
#endif
}
-
其他
编写或是解释难免有错,欢迎指正。
如有侵权,联系我删除,谢谢!!!