Как использовать ООП в WinAvr

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 12
Зарегистрирован: Пт май 20, 2016 02:44:46

Сообщение marengo »

Класс я создал. А вот объект класса создать не получается! Полазив по интернету выяснил что оператор 'new' не поддерживается компилятором!
Как же тогда использовать ООП в WinAvr? Возможно кто-нибудь может дать пример того как создать объект (экземпляр) класса. Буду благодарен!
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Как же тогда использовать ООП в WinAvr?
Никак. Вы не поверите, но существуют системы, на которых парадигма ООП не дает выигрыша, но, более того, дает существенный проигрыш в параметрах эффективности кода (размер, скорость выполнения). Небольшие контроллеры вроде AVR (а также STM8, MSP430, не слишком монструозные STM32) относятся именно к таким системам. Так что, если вы пишете под AVR, ваш выбор - процедурное/структурное программирование.

Если вам очень хочется странного, можете посмотреть, как ООП реализуется на платформе Arduino. Правда, я думаю, после того, как вы увидите, насколько нещадно такой подход выжирает память контроллера (если мне не изменяет память, мигание светодиодом занимает там что-то около полутора килобайт), вам расхочется действовать таким образом.

Что касается оператора new, то, чтобы он работал, необходим механизм динамического выделения памяти, который вам придется реализовывать самостоятельно. Кроме того, качественный менеджер памяти легко может сам занять всю память какого-нибудь младшего чипа из семейства AVR.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

marengo писал(а):Возможно кто-нибудь может дать пример того как создать объект (экземпляр) класса. Буду благодарен!
экземпляры должны создаваться статически - вот и вся проблема. для динамического, как было сказано, памяти не хватит.

при статическом создании экземпляров классов (если они грамотно разработаны, конечно) должен получаться достаточно компактный код, соизмеримый с аналогом на Си без плюсов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

если они грамотно разработаны, конечно
Как правило тот, кто может грамотно использовать C++, на чистом C пишет не хуже. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Я и не говорю, что может быть хуже. Просто в некоторых случаях код С++ легче поддается модификации, а для кого-то может быть и проще написать в парадигме ООП.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Ответить

Вернуться в «AVR»