ArcherChang 921fbfbc21 [1] 添加Andes N1068体系;
[2] 基于AE210P EVB板;
[3] 详细信息参阅bsp/AE210P/readme文件夹;
    《Andes工程创建和调试》文档;等。
2017-08-25 10:25:33 +08:00

66 lines
1.2 KiB
C

#include <stdarg.h> /* va_list, va_arg() */
#include <stdio.h>
#include "do_printf.h"
/*****************************************************************************
* PRINTF You must write your own putchar()
*****************************************************************************/
static int vprintf_help(unsigned c, void **ptr){
ptr = ptr; /* to avoid unused varible warning */
putchar(c);
return 0;
}
static int vsprintf_help(unsigned int c, void **ptr){
char *dst = *ptr;
*dst++ = c;
*ptr = dst;
return 0 ;
}
__attribute__((used))
int vsprintf(char *buffer, const char *fmt, va_list args){
int ret_val = do_printf(fmt, args, vsprintf_help, (void *)buffer);
buffer[ret_val] = '\0';
return ret_val;
}
__attribute__((used))
int sprintf(char *buffer, const char *fmt, ...){
va_list args;
int ret_val;
va_start(args, fmt);
ret_val = vsprintf(buffer, fmt, args);
va_end(args);
return ret_val;
}
__attribute__((used))
int vprintf(const char *fmt, va_list args){
return do_printf(fmt, args, vprintf_help, (void *)0);
}
__attribute__((used))
int printf(const char *fmt, ...){
va_list args;
int ret_val;
va_start(args, fmt);
ret_val = vprintf(fmt, args);
va_end(args);
return ret_val;
}