|
Как писать на С++ при создание приложений под ARM, Примеры |
|
|
|
 |
Ответов
|
Jun 22 2011, 04:57
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Расказ про ООП конечно увлекательный, но стоит учитывать, что как только вы вылезете за область применения, описанную dxp (наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой. Конкретно: множественное наследование сразу ставит крест на проекте, перегрузка функций и операторов приводит к очень хитрым багам, развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов... Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?! Использование шаблонов С++ сильно тормозит компиляцию и плохо контролируется по расходу памяти. В общем, это неправда, что С++ оправдан везде, где оправдан С.
|
|
|
|
|
Jun 22 2011, 06:40
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(andrewlekar @ Jun 22 2011, 11:57)  (наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой. Почему? В чём причины неустойчивости? Цитата(andrewlekar @ Jun 22 2011, 11:57)  Конкретно: множественное наследование сразу ставит крест на проекте, Поясните? И причём тут множественное наследование? О нём вообще ни слова не было сказано. Цитата(andrewlekar @ Jun 22 2011, 11:57)  перегрузка функций и операторов приводит к очень хитрым багам, К очень хитрым (уж куда более хитрым) багам приводит неаккуратная работа с памятью и невнимательное использование адресной арифметики, а это чисто сишные вещи. Цитата(andrewlekar @ Jun 22 2011, 11:57)  развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов... А голова-то на что? Средства-то надо применять осмысленно и к месту, а не ради них самих, о чём было сказано выше. Цитата(andrewlekar @ Jun 22 2011, 11:57)  Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?! Да как обычно - чтобы избавиться от зависимости порядка создания объектов при раздельной компиляции файлов проекта. Затраты на него копеечные. Цитата(andrewlekar @ Jun 22 2011, 11:57)  Использование шаблонов С++ сильно тормозит компиляцию Да, несколько секунд лишних, обычно, приходится потратить.  Цитата(andrewlekar @ Jun 22 2011, 11:57)  и плохо контролируется по расходу памяти. Это только если использовать бездумно и не представлять себе, во что выливается та или иная языковая конструкция. На сях тоже можно начать бездумно маллоки метать направо и налево, и будет "плохо контролируемый расход памяти". Цитата(andrewlekar @ Jun 22 2011, 11:57)  В общем, это неправда, что С++ оправдан везде, где оправдан С. Технически с точки зрения эффективности везде. А то, что голову надо включать, так это универсальное правило для любого ЯП. Единственное, с чем соглашусь, что С++ требует больше времени на изучение в силу много большего разнообразия и сложности самого языка. Это его единственный объективный недостаток перед С.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 22 2011, 07:38
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата Поясните? И причём тут множественное наследование? О нём вообще ни слова не было сказано. С++ позволяет множественное наследование, вот и упомянул. Просто перечисление объективных недостатков языка. Цитата К очень хитрым (уж куда более хитрым) багам приводит неаккуратная работа с памятью и невнимательное использование адресной арифметики, а это чисто сишные вещи. Адресная арифметика - это также и чисто микроконтроллерная область. И хоть вы на чём пишите, залезать в неё придётся. А неаккуратная работа с памятью более вероятна как раз в С++, потому что там куда чаще встречается динамическое размещение объектов. Цитата Да как обычно - чтобы избавиться от зависимости порядка создания объектов при раздельной компиляции файлов проекта. Затраты на него копеечные. Ага, сначала создавать себе проблемы, используя С++, а потом мужественно их решать  Цитата А то, что голову надо включать, так это универсальное правило для любого ЯП. На С++ голову уж слишком сильно нужно включать. Язык должен ограничивать программиста в его бурных устремлениях, а чрезмерная гибкость С++ позволяет выстрелить себе в ногу и успешно завалить проект. С со статической аллокацией - вот правильный выбор программиста микроконтроллеров.
|
|
|
|
|
Jun 22 2011, 08:28
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(andrewlekar @ Jun 22 2011, 11:38)  А неаккуратная работа с памятью более вероятна как раз в С++, потому что там куда чаще встречается динамическое размещение объектов. Набрался терпения и решил немного поработать писателем и корректором. Да, действительно адресная арифметика и динамическое размещение памяти при неопытности «да и опытности» тянет за собой источники потенциальных ошибок. Microsof, например, для решения этой проблемы и не только, разработал платформу .NET, под которую можно писать приложения на многих языках программирования, в частности применять C++ с расширением управляемости. (С++.Net). Код здесь, выполняется под управлением обще языковой среды выполнения CLR (Common Language Runtime), называется «управляемым кодом». Программы состоят из кода и данных, и обще языковая среда выполнения CLR обеспечивает поддержку и управляемым данным, и управляемому коду. Управляемые данные размещаются в управляемой динамически распределяемой области памяти (куче), которая имеет весьма ценную особенность — автоматическую сборку мусора (garbage collection). Если при создании программ на обычном C++ программист должен сам создавать средства управления динамически распределяемой областью памяти, то обще языковая среда выполнения CLR реализует этот процесс, отслеживая ссылки на объекты и автоматически освобождая ресурсы, занятые объектами, которые стали недоступны программе. Фактически, управляемые и неуправляемые (к которому мы все так привыкли) код и данные на C++ могут быть определены в одном и том же исходном файле, и в некоторой степени эти два мира могут взаимодействовать. Хотя использование управляемого кода и данных имеет много преимуществ (пример выход за пределы массива, на этапе run-time сразу выбросит исключение) оно может привести к снижению производительности и потере гибкости. Поэтому во многих случаях неуправляемый C++, при опытности и знаниях, оказывается лучшим выбором для создания программ.
--------------------
Magic Friend
|
|
|
|
Сообщений в этой теме
Hellper Как писать на С++ при создание приложений под ARM Jun 18 2011, 20:15 Danis Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 18 2011, 20:21 scifi Цитата(Danis @ Jun 19 2011, 00:21) Доволь... Jun 18 2011, 20:53 zltigo QUOTE (Hellper @ Jun 18 2011, 23:15) тяну... Jun 18 2011, 20:36 haker_fox QUOTE (Hellper @ Jun 19 2011, 05:15) и тя... Jun 19 2011, 03:03 gladov Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 20 2011, 04:34 dxp Цитата(gladov @ Jun 20 2011, 11:34) С++ п... Jun 20 2011, 07:32  gladov Цитата(dxp @ Jun 20 2011, 11:32) Два, нет... Jun 21 2011, 06:40   dxp Вынужден категорически не согласиться по всем пунк... Jun 21 2011, 08:47    scifi Цитата(dxp @ Jun 21 2011, 12:47) Если вы ... Jun 21 2011, 09:21  777777 Цитата(dxp @ Jun 20 2011, 11:32) Почему в... Sep 22 2011, 04:49   andrewlekar Цитата(777777 @ Sep 22 2011, 10:49) О как... Sep 23 2011, 04:49    777777 Цитата(andrewlekar @ Sep 23 2011, 08:49) ... Sep 23 2011, 05:52     dxp Цитата(777777 @ Sep 23 2011, 12:52) Во-вт... Sep 23 2011, 07:02 haker_fox QUOTE (gladov @ Jun 20 2011, 13:34) и еще... Jun 20 2011, 08:07  MrYuran Цитата(haker_fox @ Jun 20 2011, 12:07) 3.... Jun 20 2011, 09:54 klen Цитата(gladov @ Jun 20 2011, 08:34) С++ п... Jun 20 2011, 10:45 Axel Цитата(gladov @ Jun 20 2011, 07:34) ...пр... Jun 20 2011, 11:22 demiurg_spb Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 20 2011, 11:35 Danis ТС, позвольте не большой, скромный вопрос к Вам. З... Jun 20 2011, 12:15 GDI ringbuffer-dlya-embedded - пример кода, и даже не ... Jun 20 2011, 13:11 Hellper Цитата(GDI @ Jun 20 2011, 17:11) ringbuff... Jun 20 2011, 16:05 brag Да, стоит сделать new, как c++ тянет библиотечный ... Jun 21 2011, 08:09 brag согласен, обзор полностью верный. и применять тот ... Jun 21 2011, 09:33 scifi Цитата(brag @ Jun 21 2011, 13:33) пример ... Jun 21 2011, 09:39  Axel Цитата(scifi @ Jun 21 2011, 12:39) ...где... Jun 21 2011, 10:14  dxp Цитата(scifi @ Jun 21 2011, 16:39) При вс... Jun 21 2011, 11:58   scifi Цитата(dxp @ Jun 21 2011, 15:58) В общем,... Jun 21 2011, 14:37    Danis Цитата(scifi @ Jun 21 2011, 17:37) Другим... Jun 21 2011, 15:55 brag ЦитатаПри всём уважении, это голословное утвержден... Jun 21 2011, 10:30 Danis dxp, как у вас терпения хватает писать такие длинн... Jun 21 2011, 13:27 brag dxp, спасибо большое за обзорчик, вроде все и так ... Jun 21 2011, 22:18 haker_fox dxp, спасибо за шикарные ответы!!!
Н... Jun 22 2011, 01:05 MrYuran Цитата(andrewlekar @ Jun 22 2011, 08:57) ... Jun 22 2011, 06:38   haker_fox По сравнению с уважаемым dxp, я вообще не программ... Jun 22 2011, 08:32    andrewlekar Цитата(haker_fox @ Jun 22 2011, 14:32) А ... Jun 22 2011, 09:00     MrYuran Цитата(andrewlekar @ Jun 22 2011, 13:00) ... Jun 22 2011, 09:32     shreck Цитата(andrewlekar @ Jun 22 2011, 16:00) ... Jun 22 2011, 10:34     SergeyDDD Цитата(andrewlekar @ Jun 22 2011, 12:00) ... Jun 22 2011, 11:22     haker_fox QUOTE (andrewlekar @ Jun 22 2011, 18:00) ... Jun 22 2011, 11:30      zltigo QUOTE (haker_fox @ Jun 22 2011, 14:30) Я ... Jun 22 2011, 12:33   Danis Цитата(andrewlekar @ Jun 22 2011, 11:38) ... Jun 22 2011, 08:37   sergeeff Цитата(andrewlekar @ Jun 22 2011, 10:38) ... Jun 22 2011, 08:44 Danis Цитата(andrewlekar @ Jun 22 2011, 08:57) ... Jun 22 2011, 06:53 haker_fox QUOTE (andrewlekar @ Jun 22 2011, 13:57) ... Jun 22 2011, 08:13 dxp . Jun 22 2011, 06:29 dxp Цитата(haker_fox @ Jun 22 2011, 08:05) Не... Jun 22 2011, 07:37 Dima_G Цитата(Hellper @ Jun 19 2011, 03:15) Таки... Jun 22 2011, 08:35 zltigo История моей жизни. Когда-то очень давно, когда ко... Jun 22 2011, 11:14 Danis Кстати, прорабатывается новая версия стандарта С++... Jun 22 2011, 11:31 MrYuran Цитата(Danis @ Jun 22 2011, 15:31) Кстати... Jun 22 2011, 11:45 brag Пописал немного кода на С++ использованием динамич... Sep 21 2011, 22:05 dxp Цитата(brag @ Sep 22 2011, 05:05) Про кон... Sep 22 2011, 07:25 777777 Цитата(dxp @ Sep 22 2011, 11:25) Правда? ... Sep 22 2011, 15:40 sergeeff КодПро конструкторы и деструкторы правда пришлось ... Sep 22 2011, 09:51 brag ЦитатаЧем же так конструкторы не угодили? Это прос... Sep 22 2011, 12:11 dxp Цитата(brag @ Sep 22 2011, 19:11) НО. Нек... Sep 22 2011, 13:03 ReAl Насколько я понимаю, вот тут конструктор object бу... Sep 22 2011, 12:32 brag ЦитатаНасколько я понимаю, вот тут конструктор obj... Sep 22 2011, 12:47 brag ЦитатаObject& GetObject()
{
static Object ... Sep 22 2011, 13:13 dxp Цитата(brag @ Sep 22 2011, 20:13) Хе, еще... Sep 22 2011, 13:19 brag ЦитатаБольшинство объектов в программе, как правил... Sep 22 2011, 13:32 sergeeff Цитата(brag @ Sep 22 2011, 16:32) init ни... Sep 22 2011, 13:37 brag ЦитатаЕстественно, это стандартная реализация иниц... Sep 22 2011, 13:41 Dima_G Компилятор ничего не знает о потоках, процессах и ... Sep 22 2011, 14:38 brag ЦитатаКомпилятор ничего не знает о потоках, процес... Sep 22 2011, 15:05 Dima_G Цитата(brag @ Sep 22 2011, 22:05) Qt+gcc ... Sep 22 2011, 15:16 sergeeff Цитата(brag @ Sep 22 2011, 18:05) Qt+gcc ... Sep 22 2011, 15:21 brag ЦитатаЛично налетал на гонки в синглтоне. Компилят... Sep 22 2011, 16:09 Dima_G Цитата(brag @ Sep 22 2011, 23:09) а реали... Sep 23 2011, 04:30 brag еще вопрос по поводу реюза кода. Как, на пример, в... Sep 22 2011, 17:45 AHTOXA Цитата(brag @ Sep 22 2011, 23:45) Нужно, ... Sep 22 2011, 18:32 brag а код? -ffunction-sections , а потом это все вручн... Sep 22 2011, 18:44 brag Реализовал через манипуляцию ld -r, линкер-скрипты... Sep 22 2011, 22:54 dxp Цитата(777777 @ Sep 22 2011, 22:40) Что з... Sep 23 2011, 04:50 brag Цитатаочитайте про "Placement new". Это ... Sep 23 2011, 10:15 MALLOY2 Ссылка в тему С++ & Cortex Sep 23 2011, 11:35 brag Хe, и множественному наследованию (по крайней мере... Sep 23 2011, 16:25 andrewlekar Множественное наследование от интерфейсов разумеет... Sep 23 2011, 17:22 BlackHead Вот набрёл на библиотеку С++
http://xpcc.sourcefor... Oct 5 2011, 10:21 kikos Лет 20 назад один из заказчиков (пожилой американс... Oct 31 2011, 13:32 Сергей Борщ QUOTE (kikos @ Oct 31 2011, 16:32) На воп... Oct 31 2011, 13:49  Forger Цитата(Сергей Борщ @ Oct 31 2011, 17:49) ... Oct 31 2011, 18:14 ReAl Цитата(kikos @ Oct 31 2011, 15:32) Более ... Nov 1 2011, 06:27 IgorKossak Господа критикующие, напоминаю, тема звучит Как пи... Nov 1 2011, 08:32 brag Как можно реализовать такую вещ без кривоты, rtti,... Dec 10 2011, 02:55 Forger Цитата(brag @ Dec 10 2011, 06:55) Как мож... Dec 10 2011, 07:09 alx2 Цитата(brag @ Dec 10 2011, 07:55) Как мож... Dec 11 2011, 10:37 neiver Массив указателей на объекты базового класса - это... Dec 10 2011, 07:29 brag ЦитатаДля полноты картины, расскажите, для чего ва... Dec 10 2011, 15:37 dxp Цитата(brag @ Dec 10 2011, 22:37) массив ... Dec 10 2011, 17:39 brag ЦитатаЕсли я правильно понял, что требуется работа... Dec 10 2011, 18:11 dxp Цитата(brag @ Dec 11 2011, 01:11) stl не ... Dec 10 2011, 21:44 brag да просто проект такой, что проще свое написать, ч... Dec 10 2011, 22:59 kan35 Писать на С++ под ARM точно так же как на любую др... Dec 11 2011, 09:52 brag Спасибо.
но это тоже не то, массив указателей все ... Dec 11 2011, 13:32
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|