Не стоит забывать еще и об отсутствии культуры написания кода: я
неоднократно встречал записи вида reg |= flag1;
reg &= mask1;
reg |= flag2; ...
Неужто написавший это не понимает, что будут тратиться лишние такты МК - ведь gcc не оптимизирует все это в один вызов из-за того, что регистры волатильные!
Дальше: если вызывать одну функцию из многих мест, а там больше, чем просто обращение к одному регистру, то даже с -flto gcc может решить, что эффективней будет таки функцию вызывать, а не инлайнить ее везде.
Ну, и что совсем бесит в этих калокубах/SPL'ях - так это вызов функций инициализации периферии с аргументом - указателем на огромную структуру, которую пользователь долго собирает отдельными обращениями к полям. Понятно, что компилятор все стерпит и эта структура будет в секции text целиком валяться, а функция будет поочередно нужные поля брать. Но ведь элементарно некрасиво выглядит. И читается ужасно.
Что до генерирования калокуберского кода, так вообще у меня подгорает, когда эту портянку вижу. А некоторые ведь не брезгуют и на форумах (да и том же SO) целиком всю сгенеренную портянку приводят - можно подумать, это что-нибудь полезное даст, если сам вопрошающий ни строчки кода не написал…