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

GMbcznnWP

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


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