4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-01-23 13:37:22 +08:00

Merge pull request #2696 from HubertXie/master

[kservice][rt_kprintf]修复long long数据类型打印问题
This commit is contained in:
Bernard Xiong 2019-05-16 20:17:53 +08:00 committed by GitHub
commit bab3546f01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -545,6 +545,26 @@ RTM_EXPORT(rt_show_version);
/* private function */
#define isdigit(c) ((unsigned)((c) - '0') < 10)
#ifdef RT_PRINTF_LONGLONG
rt_inline int divide(long long *n, int base)
{
int res;
/* optimized for processor which does not support divide instructions. */
if (base == 10)
{
res = (int)(((unsigned long long)*n) % 10U);
*n = (long long)(((unsigned long long)*n) / 10U);
}
else
{
res = (int)(((unsigned long long)*n) % 16U);
*n = (long long)(((unsigned long long)*n) / 16U);
}
return res;
}
#else
rt_inline int divide(long *n, int base)
{
int res;
@ -563,6 +583,7 @@ rt_inline int divide(long *n, int base)
return res;
}
#endif
rt_inline int skip_atoi(const char **s)
{
@ -584,7 +605,11 @@ rt_inline int skip_atoi(const char **s)
#ifdef RT_PRINTF_PRECISION
static char *print_number(char *buf,
char *end,
#ifdef RT_PRINTF_LONGLONG
long long num,
#else
long num,
#endif
int base,
int s,
int precision,
@ -592,7 +617,11 @@ static char *print_number(char *buf,
#else
static char *print_number(char *buf,
char *end,
#ifdef RT_PRINTF_LONGLONG
long long num,
#else
long num,
#endif
int base,
int s,
int type)