|
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). С++ не является только лишь объектно-ориентированным - он поддерживает различные способы/методы (парадигмы) программирования - в какой-то книжке так и было написано "мультипарадигменный ЯП" (книжку точно не скажу, насколько помню, это "Дизайн и эволюция С++" Б.Срауструпа, но могу ошибаться). Т.е. на С++ можно одновременно использовать и процедурное программирование, и объектно-ориентированное и даже в каком-то виде функциональное, хотя напрямую сам ЯП это не поддерживает и достигается это с помощью сторонних библиотек.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|