ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
30 апреля
444560 Топик полностью
fk0, легенда (20.09.2013 18:10, просмотров: 180) ответил fk0 на Зачем C30 (XC16) и C32 (XC32) заменяют printf на _printf_cdnopsuxX ? И там чем дальше, тем странней. Несколько килобайт непонятно чего делающего кода.
Короче итог такой. Экономия ~12кБайт сходу на одном проекте, после замены sscanf и всех printf на свои. Но нужен свой assert и исключить dump_heap (в них жёстко прописано printf_cdnopsuxX). На другом проекте только замена sscanf дала экономию в 8кБайт. В обоих случаях -msmart-io=0 нужно поставить, иначе без толку. Причём в первом случае такая опция без замены давала увеличение кода на 3.5кБайт, а во втором, тоже без замены sscanf, экономию в 4кБайта. Разница в том, что во втором проекте используется плавающая точка (но не ввод-вывод с ней, что вообще странно...) Дальнейшие направления борьбы с индокодом: заменить malloc и всё такое, ибо работает как-то нехорошо, да и размер подозрительно маленький. И этот вариант, со своим недо-printf, он только для мелких проектов (нет файлов, всё в одно место выпечатывается -- в putchar). В большом, где нужны разные файлы не понятн пока как сделать...
[ZX]