ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Пятница
28 января
/1164700
Топик полностью
VladislavS. (14.01.2022 22:27, просмотров: 143) ответил Cкpипaч на Спасибо. Я в ужасе. Ждем появления отладчиков, позволяющих выполнять компиляцию в пошаговом режиме.
С++ позволяет больше информации об объекте использовать на этапе компиляции. Он позволяет, но не обязывает писать программы для компилятора. Хочу показать простой пример, который можно запросто реализовать на препроцессоре. 

GMbcznnWP

Тут класс для работы со всем семейством микросхем EEPROM 24Cxx. Они неприятны тем, что у микросхем разного размера разный способ адресации. Если вы уже посмотрели код, то не могли не обратить внимания, что он мало чем от обычного С отличается. Всё читается так как привыкли С-программисты. Обычная программа, никакого мета, только там где есть слово constexpr вычисление происходит на этапе компиляции. В принципе, если убрать класс и вместо if constexpr всё обвешать #ifdef, то всё то же самое будет и на С, точно так же на этапе препроцессинга повыкидывается 80% кода. А теперь представьте, что вместо каждого if constexpr будет блок #ifdef, что останется от читаемости кода?


Идея выносить метапрограммирование за пределы программы идиотизм. Всё знание об объекте должно быть инкапсулировано в одном месте.

Ответы