По ходу написания возникло ещё несколько вопросов, Вы уж извините.
1) Предположим у меня из rs232 в буффер грузятся различные структуры данных, их размер и тип определяются в момент загрузки. В процессе работы, обработанные структуры удаляются из буффера (удаляемая может находится внутри буфера).
Я вижу два варианта работы с такими данными:
а) Динамически размещаю каждую новую структуру и работаю с объявленными полями. Динамически удаляю.
б) Один раз с пом. malloc выделить всю свободную память и работать с данными, как с байтами, производя преобразования на ходу вручную.
Я как конченный ассемблерщик

склоняюсь конечно ко второму. Преимущество в простоте загрузки и очистки "мусора". Но прога в первом варианте будет выглядеть, по-моему, красивей.

Вопрос 1: Как много ресурсов будет зажирать постоянно дёргающиеся malloc/free. Будет ли эффективней работа со структурой.
Вопрос 2: если я получаю адрес расположения структуры в указатель
byte *Addr;
и имею структуру типа описанной ниже. При этом я не хочу под неё выделять память. Я хочу иметь одну переменную-структуру и присвоить значение адреса чтобы иметь возможность работать с полями по законам соответствующей арифметики. Будет ли правильным такое объявление ...
struct x1
{
word TimeStart; // Время начала исполнения команды
byte TimeMashtabTek, // Текущее значение масштаба для времени исполнения
TimeMashtab; // Масштаб для времени исполнения
word TimeLife; // Время исполнения команды с учётом масштаба
int BegX,BegY, // Начало объекта (X,Y)
SizeX,SizeY; // Размеры объекта (X,Y)
signed char VecX,VecY; // вектор перемещения объекта (X,Y)
} *tip1;
... и такая работа с ним. Если нет, то как сделать правильно
tip1 = Addr; /* или типа ... "tip1 = (struct x1*) Addr; */
*tip1.TimeLife--; /* слово уменьшится на 1 */
Прошу не смейтесь, так как я плаваю и пока не "чуствую языка".
2) Что за всеобщая истерика с printf/scanf. Почему все так стремятся использовать эти процедуры? Что это даёт программисту (в смысле на микроконтроллере)?
Если это действительно так важно, то как их использовать если поток I/O у тебя совершенно свой? В смысле есть ли какой нибудь Assign? Переписать Putc/Getc?
Если да, то как вводить/выводить на разные устройства в одном проекте? Короче чуствую что я не знаю целую глобальную область и это удручает.