abivan (20.09.2013 18:32, просмотров: 191) ответил fk0 на Короче итог такой. Экономия ~12кБайт сходу на одном проекте, после замены sscanf и всех printf на свои. Но нужен свой assert и исключить dump_heap (в них жёстко прописано printf_cdnopsuxX). На другом проекте только замена sscanf дала экономию в
сто лет уж своим пользуюсь еще со времен когда printf половину ПП занимал. Вот до scanf руки не дошли, задач не было. Alloc тоже свой, с тех времен когда еще встроенный не работал. Посему проблемы новых компиляторов пока обходят стороной
CVTTOA: Функции обращения чисел в строки.
_________________________________
str2 = cvtftoa(str, dval, type, dpts); /(char *)/
обращает double в строку
str2 = cvtitoa(str, ival, base); /(char *)/
обращает int в строку
str2 = cvtltoa(str, lval, base); /(char *)/
обращает long int в строку
str2 = cvtultoa(str, lval, base); /(char *)/
обращает unsigned long в строку
str2 = cvtutoa(str, uval, base); /(char *)/
обращает usigned или 16-ричную int в строку
Аргументы:
int base; основание системы счисления используемое для
записи величины. Основание это число в пределах
от 1 до 37.
int dplcs; число десятых помещенных после точки "." при
обращении величины с плавающей точкой.
double dval; ¦
int ival; ¦ исходная величина которая будет обращена
long lval; ¦ в сторону
usigned uval; ¦
char str[]; адрес буфера для приема обращенной величины.
char *str2; адрес того же буфера возвращаемый для удобства
int type; формат числа. Тип может быть "F" для фиксированной
формы, "E" - для экспоненты, или "G" - позволяет
выбор функции короче для получения более короткого
из двух видов.
Пример: Обращение строки из двоичного представления в ASCII.
cvtftoa(str, 3245., 'F',3); /*3245.000 */
cvtftoa(str, 3245., 'E', 4); /* 0.3245E04 */
cvtutoa(str, 4097, 16); /* 1001 */
cvtltoa(str, -123L, 10); /* -123 */
cvtultoa(str, 0xffffffff, 16); /* ffffffff */
cvtutoa(str, 0x8000, 10); /* 32768 */