Цитата(Qwertty @ Aug 26 2009, 23:42)

А зачем в маленьком контроллере, где любимое дело подсчитывать такты C++? Проекты для AVR не настолько большие, чтобы ощутить прелести ООП. Но это естественно ИМХО.
Ну так и пользоваться только минимумом от С++. "С с классами" тоже неплохо. ИМХО :-)
Посмотрите, например, это
http://electronix.ru/forum/index.php?s=&am...st&p=487831С-шный "#define-макрос" NONATOMIC_BLOCK - нечто очень хитрое, ползующееся непереносимыми на другие компиляторы расширениями GCC.
Без этих расширений не выйдет написать макрос так, чтобы изнутри привязанного к нему блока кода можно было выйти по break/goto/return.
Можно сказать "это далеко не всегда нужно", а можно привыкнуть и коазывается, что это часто удобно.
Ну так вот на С++ это же самое пишется гораздо более переносимо, остаётся зависимость от архитектуры, но привязка к расширениям GCC пропадает.
Или вот
http://electronix.ru/forum/index.php?s=&am...st&p=547510делаем шаблон, при помощи которого любой POD-тип можно "атомизировать" - любой доступ к нему будет производиться при запрещённых прерываниях. Иначе любое обращение пришлось бы оборачивать в ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
А тут
http://electronix.ru/forum/index.php?s=&am...st&p=535341наоборот - обёртка для volatile-переменной, которая в обработчике прерывания кеширует volatile-переменную во временой, все модификации в ней и при любом выходе из прерывания сохраняет значение назад в volatile-переменную.
(эти два примера - atomiser и cache_volatile - надо бы скрестить в один, научить cache_volatile<> принимать atomic<>)
По объёму кода/тактам - везде примеры компиляции, вроде и не проигрывает тому, что для того же функционала надо будет писать на С.
И так по мелочи можно программировать пусть и без ОО, но возможностями С++ сделать работу комфортнее.