Привет хабраплюсплюсовцам! Хочу разобрать проблему компилятора avr-g++, из-за которой в разных дискуссиях про AVR и Arduino звучит «С++ — это не для микроконтроллеров, C++ жрёт память, C++ генерирует раздутый код — пишите на голом C, а лучше на ASM». Для начала давайте разберёмся, в чём же преимущество C++ перед C. Концепций, которые добавляет C++ много, но самая значимая и самая эксплуатируемая — это поддержка ООП. Что такое ООП? ИнкапсуляцияНаследованиеПолиморфизм Использование первых двух пунктов в C++ «бесплатно». Никакого преимущества программа на чистом C перед программой на C++ с инкапсуляцией и наследованием не имеет. Картина меняется, когда мы подключаем к действу полиморфизм. Полиморфизм бывает разным: compile-time, link-time, run-time. Я говорю о классическом run-time, т.е. о виртуальных функциях. Как только в своих классах вы начинаете добавлять виртуальные методы, чудесным образом растёт потребление как Flash-памяти, так и SRAM. Почему так происходит и, что с этим можно было бы сделать, расскажу под катом. Читать дальше →
Предотвращает сканирование IP-адреса интернет-злоумышленниками,предотвращая киберпреступность и кражи личных данных. Попробуйте Глобус Браузер https://goo.gl/6BYXhl
CryptoКотики Маркетинг в BLOCKCHAIN ( IPO, ICO)
Сделаем GCC C++ для AVR и Arduino лучше?
Привет хабраплюсплюсовцам!
Хочу разобрать проблему компилятора avr-g++, из-за которой в разных дискуссиях про AVR и Arduino звучит «С++ — это не для микроконтроллеров, C++ жрёт память, C++ генерирует раздутый код — пишите на голом C, а лучше на ASM».
Для начала давайте разберёмся, в чём же преимущество C++ перед C. Концепций, которые добавляет C++ много, но самая значимая и самая эксплуатируемая — это поддержка ООП. Что такое ООП?
ИнкапсуляцияНаследованиеПолиморфизм
Использование первых двух пунктов в C++ «бесплатно». Никакого преимущества программа на чистом C перед программой на C++ с инкапсуляцией и наследованием не имеет. Картина меняется, когда мы подключаем к действу полиморфизм. Полиморфизм бывает разным: compile-time, link-time, run-time. Я говорю о классическом run-time, т.е. о виртуальных функциях. Как только в своих классах вы начинаете добавлять виртуальные методы, чудесным образом растёт потребление как Flash-памяти, так и SRAM.
Почему так происходит и, что с этим можно было бы сделать, расскажу под катом.
Читать дальше →
интернет-злоумышленниками,предотвращая киберпреступность и кражи личных данных. Попробуйте Глобус Браузер https://goo.gl/6BYXhl