Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Классно вы переписали код с С++ на C-и при работе со строками.
А я ведь говорил, что скатитесь к C-и и никуда не денетесь.
Если бы сподобились измерить время выполнения malloc и free, то увидели бы что они в среднем всегда выполняется за 3 мкс.
typedef struct {
char *buf;
int size, len;
bool success;
} buf_t;
void init(buf_t *s, char *buf, int size) {
assert(NULL != buf);
assert(size > sizeof(void *));
s->buf = buf;
buf[0] = '\0';
s->size = size;
s->len = 0;
s->success = true;
}
bool cat(buf_t *s, char const *str) {
int i;
i = 0;
while ((s->len < s->size - 1) && (str[i] != '\0')) {
s->buf[s->len] = str[i];
s->len += 1;
i += 1;
}
s->buf[s->len] = '\0';
s->success = str[i] == '\0';
return s->success;
}
char xml[768];
buf_t buf;
bool success;
init(&buf, xml, sizeof(xml));
if (cnt > 0)
{
cat(&buf, ",");
}
cat(&buf, "{\"type\":\"");
if (entry.isSubDir())
{
cat(&buf, "dir");
} else
{
cat(&buf, "file");
}
cat(&buf, "\",\"name\":\"");
if (s->success && entry.getName(s->buf, s->size, &s->len)) {
cat(&buf, "\"}");
}

Язык С++, на котором чаще всего пишут для микроконтроллеров...
Это мило. Микроконтроллер микроконтроллеру, конечно, рознь, но мне думалось, что на AVR или PIC16 с парой килобайт памяти все-таки больше используют старый добрый Си. Возможно, с элементами ООП типа имитации классов и т. п.
В противном случае слишком велик соблазн воспользоваться конструкциями, которые как этот самый new выглядят исключительно просто, но под собой скрывают массу лишних операций.
Не используйте PIC16. Самый дешевый PIC16 стоит 2.5$. STM32 с теми же характеристиками 1$.
У AVR нет нормальных отладчиков. Не используйте AVR. (5 секунд на загрузку 256кб. RLY?!)
Это мое личное мнение.
Обзор одной российской RTOS, часть 4. Полезная теория