Тема: FAQ по STM8
Показать сообщение отдельно
Непрочитано 04.09.2013, 01:47  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от nahimovv Посмотреть сообщение
А в чём изюминка?
Я так понимаю, функция EasyRider'а предназначена для вызова конструктором форматного вывода - она заполняет строку слева-направо. Хотя, конечно, отсутствие универсальности делает её немного неудобной. Если форматный вывод не нужен, то, действительно, удобнее заполнять справа-налево. И минимизировать количество вариантов за счет небольшого усложнения. Скажем, если не нужны отрицательные числа, м.б. бы сделать так:
Код:
#define WBUFSIZE   16

static char     xtal[] = "0123456789ABCDEF";
static char     buf [WBUFSIZE+1];

char    *_int2str(uint val, uchar radix, uchar width)
{
char *s = &(buf[WBUFSIZE]);
uchar len = 0;

        do {
           *--s = xtal[val % radix];
           ++len;
        } while (val /= radix);

        while ( len++ ‹ width )
                *--s = xtal[0];

        return(s);
}
#define atoi(val)     _int2str(val,   10, 0)
#define atox(val)     _int2str(val, 0x10, 0)
#define ato...(val)   _int2str(val, ...)
________________
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 04.09.2013 в 02:00.
tempora вне форума