ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
1444403 Топик полностью
Costic (22.06.2024 15:25, просмотров: 909) ответил Cкpипaч на Да. Сразу на более высокий уровень абстракции. Но совершенно не так как написали вы.
Этот код гавно, и я поясню почему. 

1) Магические константы, т.е. целые числа из множества INT_MIN..INT_MAX. Это уже ошибка. Множество портов и пинов строго ограничено, обычно именовано и не всегда последовательно. Поэтому, по-хорошему, тут нужен класс, но на практике (увы) ограничиваются enum, а говнокодеры #define.

2) Операция включения\выключения пина должна быть определена, например, оператором или функцией для соответствующего класса. Для говнокода можно макрос использовать типа PIN_ON(p, on).

3) Включение светодиода не всегда записью 1 делается. Чаще даже записью 0, чтобы ток в обратном направлении шёл. Да, главное, класс Led необходим со своими методами/операциями.

У Владислава хорошо написано, замечательные интерфейсы. Только реализация у него "дикая". Он ставит цель - получить компактный и быстрый машинный код любыми средствами с сохранением ООП. Цель должна быть, IMHO, описать/отобразить (map) электротехническую систему управления средствами С++.

Увы, за 50 лет нормальных библиотек для микроконтроллеров не появилось. Что-то ARM пытается сделать с mbedOS, но реализация - дикое говно. Хотя интерфейсы правильные.