|
winAVR и С++ |
|
|
|
Aug 7 2006, 07:08
|
Группа: Новичок
Сообщений: 5
Регистрация: 21-06-06
Пользователь №: 18 253

|
Как сконфигурировать makefile, чтобы компилятор понимал программу для мк не на С, а на С++. Начал писать программу на С++, с использванием классов, а компилятор выдал, что не понимает классы.
|
|
|
|
|
May 9 2007, 19:38
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 12-04-06
Из: Haifa
Пользователь №: 16 042

|
Незнаю как другие, но у меня не получилось сконфигурировать AVRStutio напрямую для работы с файлами .cpp , потому что AVRStutio по дифолту создает файл .с. Я делал проект без "Create initial file" , только имя проекта. Потом создавал пустые файлы с расширением .срр и добавлял в проект. Но это пол беды, компайлер конечно же не будет работать с make файлом который делает AVRStutio, поэтому пришлось сделать make файл с помощью MFile который входит в пакет WinAVR, подправить его под свой сорсе файл,сказать в AVRStudio - "Use External Makefile" и все заработало. Может это и не самый короткий путь!
Всего доброго.
Сообщение отредактировал Dibor - May 9 2007, 19:42
|
|
|
|
|
May 9 2007, 20:17
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(Dibor @ May 9 2007, 23:38)  Незнаю как другие, но у меня не получилось сконфигурировать AVRStutio напрямую для работы с файлами .cpp , потому что AVRStutio по дифолту создает файл .с. Я делал проект без "Create initial file" , только имя проекта. Потом создавал пустые файлы с расширением .срр и добавлял в проект. Но это пол беды, компайлер конечно же не будет работать с make файлом который делает AVRStutio, поэтому пришлось сделать make файл с помощью MFile который входит в пакет WinAVR, подправить его под свой сорсе файл,сказать в AVRStudio - "Use External Makefile" и все заработало. Может это и не самый короткий путь!
Всего доброго. Можно и не использовать AVRStudio для работы. В WINAVR входит редактор PN, почти IDE. Сам использую Eclipse для работы, единственное неудобство, надо отдельно запускать AVRStudio на симуляцию. makefile можно скорректировать как надо для работы с с++, по умолчанию есть поддержка avr-g++. Вопрос: зачем на контроллере использование с++?
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
May 10 2007, 20:04
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
>mdmitry, dxp, не начинайте религиозный спор. Религиозные споры не люблю!
1. С++ можно использовать как расширенный вариант С (сам так делал на этапе изучения С++). 2. Использовать собственно С++, то есть особенности языка, а именно, классы, исключения и др. Надежность разработки выше из-за наличия механизмов защиты данных. Возникнут накладные расходы (пример, таблицы виртуальных функций), если скорость работы устраивает , то все в порядке. НО в контроллерах обычно с запасом ресурсов не все благополучно. На мой взгляд, обрабатывать файл С компилятором С++ не эффективно из-за отсутствия конструкций языка, ориентированного на компилятор. Идеология разработки обеспечения на С и С++ сильно различается (процедурно и объекто-ориентированные языки)(IMHO).
Сообщение отредактировал mdmitry - May 10 2007, 20:07
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
May 10 2007, 20:23
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(bullit @ May 10 2007, 20:15)  А некто не знает почему в AVRStudio нет поддержки С++? Вродь как им должно быть до фени. А ей и есть до фени. По крайней мере проекты, собранные в ИАР, поддерживаются (выходной формат ubrof8). В формате elf (coff, dwarf или что у него там ещё), выдаваемом WinAVR, поддержка С++ тоже должна быть. Цитата(bullit @ May 10 2007, 20:15)  И еще Есть ли преимущество С++ перед С при програмировании именно для AVRов? Или это чисто определяется преимуществами одного из языков, но не как для АВРов не кретичны? mdmitry в частности ответил. От себя добавлю, C++ для AVR не помеха (и наоборот).
|
|
|
|
|
May 11 2007, 04:38
|

пуля
   
Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959

|
Цитата(IgorKossak @ May 11 2007, 02:23)  А ей и есть до фени. По крайней мере проекты, собранные в ИАР, поддерживаются (выходной формат ubrof8). В формате elf (coff, dwarf или что у него там ещё), выдаваемом WinAVR, поддержка С++ тоже должна быть.
mdmitry в частности ответил. От себя добавлю, C++ для AVR не помеха (и наоборот). Но почему же она относится к файлам *.cpp как other. Я хочу использовать AVRStudio как программу разработки и прошивки. А не через сторонние программы. Написал в ней, собрал проект и прошил - ВСЁ. А она не позволяет (по крайней мере в явном виде) работать с С++, на котором я надумал писать программы. Кто может помочь? Или запопробывать ИАР?
|
|
|
|
|
May 11 2007, 05:30
|

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

|
Цитата(mdmitry @ May 11 2007, 03:04)  >mdmitry, dxp, не начинайте религиозный спор. Религиозные споры не люблю! Аналогично.  Просто расставим точки над 'i'. Цитата(mdmitry @ May 11 2007, 03:04)  1. С++ можно использовать как расширенный вариант С (сам так делал на этапе изучения С++). Согласен, на начальном этапе перехода от С к С++ можно. Но лучше уже и тут вникать в идеологию ++ и долго не засиживаться на "улучшенном С". Цитата(mdmitry @ May 11 2007, 03:04)  2. Использовать собственно С++, то есть особенности языка, а именно, классы, исключения и др. Вот исключения в МК - это определенно лишнее. Еще можно поспорить про RTTI, но остальное прекрасно ложится на любой МК, который дружит с С. Цитата(mdmitry @ May 11 2007, 03:04)  Надежность разработки выше из-за наличия механизмов защиты данных. Возникнут накладные расходы (пример, таблицы виртуальных функций), если скорость работы устраивает , то все в порядке. НО в контроллерах обычно с запасом ресурсов не все благополучно. Здесь не согласен. Виртуальные функции почти не несут накладных расходов: попробуйте реализовать ту же самую функциональность на голом С - у Вас появятся те же таблицы указателей на функции. Только работать с ними придется руками (инициализация, обращение), что гораздо сильнее чревато ошибками. Единственной вещью, которую можно отнести к накладным расходам и от которой не уйти - это наличие указателя vptr в каждом объекте класса. Но накладные такого размера совсем не портят жизнь даже на мелких AVR. Цитата(mdmitry @ May 11 2007, 03:04)  Идеология разработки обеспечения на С и С++ сильно различается (процедурно и объекто-ориентированные языки)(IMHO). С++ не является только лишь объектно-ориентированным - он поддерживает различные способы/методы (парадигмы) программирования - в какой-то книжке так и было написано "мультипарадигменный ЯП" (книжку точно не скажу, насколько помню, это "Дизайн и эволюция С++" Б.Срауструпа, но могу ошибаться). Т.е. на С++ можно одновременно использовать и процедурное программирование, и объектно-ориентированное и даже в каком-то виде функциональное, хотя напрямую сам ЯП это не поддерживает и достигается это с помощью сторонних библиотек.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 12 2007, 08:19
|

пуля
   
Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959

|
Цитата(mdmitry @ May 12 2007, 02:26)  2 dxp Сказано было: пример, таблицы виртуальных функций. Указывать тонкости языка для bullit на мой взгляд пока не стоит.> PS Сам я отличия между С и С++ не знаю.
Я пытался дать ответ человеку, который начинает работать , а не профессионалу.
bullit, у Вас же установлен WINAVR. forever failure уже дал ответ. Можете создать makefile прилагаемой к пакету утилитой MFILE или скопируйте и откорректируйте имеющийся шаблон. Есть отдельная секция, посвященная настройкам avr-g++ (с указанием расширений целевых файлов). С помощью makefile файла можно запускать и программатор командной строки (AVRDUDE, avreal и другие). Использую сам эту возможность в среде разработки eclipse. > Я хочу использовать AVRStudio как программу разработки и прошивки. Чем привлекает Вас AVRStudio как IDE? Меня привлекает отсутствие нужды применения стороних программ. Написал в ней программу, собрал проект, отладил и прошил. А чего еще надо-то? Вроде для начала там всё есть. Незнаю конечно правильно ли её называть IDE, но по этим рамкам Википедия о IDE AVRStudio вроде проходит как IDE. Или чего-то в AVRStudio нехватает?PS Тема мной конечно была выбранна не верно, тема о WinAVR и С++, а я о AVRStudio и С++, простите!
|
|
|
|
|
May 13 2007, 12:53
|

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

|
Цитата(mdmitry @ May 12 2007, 03:26)  2 dxp Сказано было: пример, таблицы виртуальных функций. И отвечено было: попробуйте реализовать ту же самую функциональность, которую дают виртуальные функции в С++, на С - у Вас появятся ровно те же самые таблицы указателей на функции, только создавать их (таблицы), инициализировать значениями и осуществлять доступ придется вручную, что чревато ошибками и кодом, далеким от идеала читабельности. Итого, по накладным расходам выйдет то же самое.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 13 2007, 16:15
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(dxp @ May 13 2007, 16:53)  И отвечено было: попробуйте реализовать ту же самую функциональность, которую дают виртуальные функции в С++, на С - у Вас появятся ровно те же самые таблицы указателей на функции, только создавать их (таблицы), инициализировать значениями и осуществлять доступ придется вручную, что чревато ошибками и кодом, далеким от идеала читабельности. Итого, по накладным расходам выйдет то же самое. Согласен. > пример, таблицы виртуальных функций. Говорилось о возможных накладных расходах для С++ и не более. Дискуссию на эту тему можно закрывать. 2bullit >Или чего-то в AVRStudio нехватает? В вопросе только вопрос. Разные IDE имеют разную функциональность, каждый выбирает то, что нравится. Лично мне не нравиться сам редактор в AVRStudio, поэтому использую другую IDE. Возможно я склонен к использованию продуктов под GPL.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
May 14 2007, 04:08
|

пуля
   
Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959

|
Цитата >Или чего-то в AVRStudio нехватает? В вопросе только вопрос. Вопрос был связан с тем, что нет ли где-то в сторонних продуктах чего-то еще, более удобного или продвинутого. Цитата Разные IDE имеют разную функциональность, каждый выбирает то, что нравится. Вот я и выбрал AVRStudio по своим запросам. Думаю дальнейшую дискусию по этому поводу можно закрыть.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|