Как стать автором
Обновить

Комментарии 8

defer - штука хорошая на общий случай, но для частных лучше написать своие RAII объекты. тогда

mutex::acquire(m);
defer (mutex::release(m));

Превратится в

mutex::lock lock(m);

Да, нужно писать по своему lock на каждый случай, но зато на строку меньше, не нужен макрос и точно невозможно забыть освободить. defer можно забыть написать, а c одной строкой ошибки уже не будет

Спасибо за интересную статью!
Но позволю себе позанудствовать: на моей памяти "Си-с-классами" было принято называть C++ до появления в нем шаблонов. У вас же шаблоны используются вполне себе активно, местами только они и используются ;)
Так что вы описали вполне себе modern C++, особенно вот в этом фрагменте (а ведь многие еще себе и C++17 позволить не могут):

namespace furi::mutex {
  constexpr inline auto& acquire = ::furi_mutex_acquire;
}

а не "Си-с-классами".

Впрочем, полезность и интересность статьи это никак не умаляет.

Я, когда увидел, что именно автор называет Си-с-классами, тут же прокрутил статью до низу и начал искать Ваш коментарий.

:)

Надо сказать, что у автора получился кликбейтный заголовок в хорошем смысле этого слова. Как бы странно это не звучало :)

Для того, чтобы не писать в каждой строчке constexpr inline auto&, я определил для этого макрос FURI_HH_ALIAS.

Мне кажется, что польза от подобных макросов, если вы планируете компилировать код там где есть и где нет constexpr. Макросы только для экономии десятка нажатий клавиш, IMO, замусоривают код и ухудшают читабельность. Хотя если это проект для себя, то неважно

Спасибо за статью, мне кажется, что C++-почти без классов - это прекрасно.

Я так и не понял, что в итоге автор хотел написать или написал.

Какую недостающую фичу Флиппера он пытался реализовать.

Целью было просто познакомиться с API на непривычном мне языке, и написать хоть что-нибудь. В итоге написал очень простое приложение-таймер; его код тоже есть в репозитории.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий