Удобная для встраиваемых систем реализация printf — Embedded Artistry использование
printf()
из-за опасений по поводу раздувания двоичного размера. Вместо этого команды создадут свою собственную нестандартную альтернативу printf
. Классический пример — Arduino SDK 9.0011 Print , который требует от пользователей разделения операторов печати на несколько вызовов функций для поддержки различных форматов отображения переменных. Вместо того, чтобы полагаться на самодельное решение, мы рекомендуем использовать библиотеку mpaland/printf (примечание : теперь мы рекомендуем форк, поддерживаемый eyalroz, который включает ряд исправлений и улучшений исходной библиотеки). Эта библиотека была разработана специально для использования во встроенных системах. Он обеспечивает поддержку printf
семейство функций, включая sprintf
, snprintf
и vsnprintf
. Предоставляются все важные флаги форматирования, включая форматы с плавающей запятой и экспоненциальные форматы, а также спецификаторы ширины и точности.
Библиотека поддерживает повторный вход и безопасна для потоков. Нет динамического выделения памяти, а также статических переменных или буферов, выделяемых библиотекой. Код не содержит предупреждений, предупреждений LINT и протестирован более чем в 400 случаях. Автор также утверждает, что он подходит для использования в автомобильной промышленности.
Заставить эту библиотеку работать в вашей системе очень просто. Внешних зависимостей нет. Все, что нужно, — это реализация функции _putchar
:
void _putchar(char character) { // Добавляем код для печати одного символа на какое-то устройство }
Поскольку библиотека предназначена для использования во встроенных системах, доступны параметры для уменьшения объема памяти. Размеры внутренних буферов с плавающей запятой можно настроить в соответствии с конкретными потребностями вашей системы. Плавающая запятая, экспонента и long long
форматы печати также могут быть отключены во время компиляции.