реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> winAVR и С++
zaman
сообщение Aug 7 2006, 07:08
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 21-06-06
Пользователь №: 18 253



Как сконфигурировать makefile, чтобы компилятор понимал программу для мк не на С, а на С++.
Начал писать программу на С++, с использванием классов, а компилятор выдал, что не понимает классы.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Aug 7 2006, 12:09
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Открыть файл winavr/doc/gcc/gcc.pdf и прочитать раздел 3.2,
где написано, что :

file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C

C++ source code which must be preprocessed. Note that in ‘.cxx’, the last two letters must both be literally ‘x’. Likewise, ‘.C’ refers to a literal capital C.

Или чуть дальше :

You can specify the input language explicitly with the ‘-x’ option:

-x language

Specify explicitly the language for the following input files (rather than letting the compiler choose a default based on the filename suffix). This option applies to all following input files until the next ‘-x’ option. Possible values for language are:

c c-header cpp-output c++ c++-header c++-cpp-output
objective-c objective-c-header objc-cpp-output assembler assembler-with-cpp ada f77 f77-cpp-input ratfor java treelang

То есть, либо переименуйте исходный файл, либо добавьте ключ -x c++ в строку вызова компилятора. Переименовать исходник предпочтительнее, поскольку вы сможете использовать как "с", так и "срр" исходные файлы в одном проекте.
Go to the top of the page
 
+Quote Post
bullit
сообщение May 8 2007, 18:58
Сообщение #3


пуля
****

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



А как настроить AVRStudio на работу с С++(GCC(WinAvr)). Везь уже извелся.
Не ужели нельзя что-то сделать?
Если нет, то это как минимум очень странно, а максимум - плохо.
Уж больно эта среда мне понравилась.

Заранее большое спасибо!
Go to the top of the page
 
+Quote Post
Dibor
сообщение May 9 2007, 19:38
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
mdmitry
сообщение May 9 2007, 20:17
Сообщение #5


Начинающий профессионал
*****

Группа: Свой
Сообщений: 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++.
Вопрос: зачем на контроллере использование с++?


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
bullit
сообщение May 10 2007, 08:01
Сообщение #6


пуля
****

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



Не С не С++ я хорошо не знаю. Так основы. На работе все программы писались на С++(по крайней мере расширение файлов *.cpp) вот и надо мне их изучить и поддерживать дальнейшее развитие.
Встречный вопрос: есть ли отличия между С и С++ для WinAVR при програмировании для AVR? Если нет отличия то даже заморачиваться с этим вопросом не стану, просто на С писать буду и всё. И AVRStudio использовать буду.
PS Сам я отличия между С и С++ не знаю.
Go to the top of the page
 
+Quote Post
forever failure
сообщение May 10 2007, 11:02
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Отличия между C и C++ достаточно велики, независимо от того под какую платформу на них писать.
Если хотите писать программы на С++ - изучите общие, платформонезависимые различия языков, а потом решайте, какому из них отдать предпочтение.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 10 2007, 11:40
Сообщение #8


Adept
******

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



Цитата(mdmitry @ May 10 2007, 03:17) *
Вопрос: зачем на контроллере использование с++?

А зачем вообще нужен С++?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 10 2007, 11:44
Сообщение #9


Шаман
******

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



mdmitry, dxp, не начинайте религиозный спор.

--------------------------------
Здоровому физзарядка не нужна, а больному уже не поможет.
Go to the top of the page
 
+Quote Post
bullit
сообщение May 10 2007, 17:15
Сообщение #10


пуля
****

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



А некто не знает почему в AVRStudio нет поддержки С++?
Вродь как им должно быть до фени.

И еще Есть ли преимущество С++ перед С при програмировании именно для AVRов? Или это чисто определяется преимуществами одного из языков, но не как для АВРов не кретичны?
Go to the top of the page
 
+Quote Post
mdmitry
сообщение May 10 2007, 20:04
Сообщение #11


Начинающий профессионал
*****

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



>mdmitry, dxp, не начинайте религиозный спор.
Религиозные споры не люблю!

1. С++ можно использовать как расширенный вариант С (сам так делал на этапе изучения С++).
2. Использовать собственно С++, то есть особенности языка, а именно, классы, исключения и др. Надежность разработки выше из-за наличия механизмов защиты данных. Возникнут накладные расходы (пример, таблицы виртуальных функций), если скорость работы устраивает , то все в порядке. НО в контроллерах обычно с запасом ресурсов не все благополучно.

На мой взгляд, обрабатывать файл С компилятором С++ не эффективно из-за отсутствия конструкций языка, ориентированного на компилятор.
Идеология разработки обеспечения на С и С++ сильно различается (процедурно и объекто-ориентированные языки)(IMHO).

Сообщение отредактировал mdmitry - May 10 2007, 20:07


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 10 2007, 20:23
Сообщение #12


Шаман
******

Группа: Модераторы
Сообщений: 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 не помеха (и наоборот).
Go to the top of the page
 
+Quote Post
bullit
сообщение May 11 2007, 04:38
Сообщение #13


пуля
****

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



Цитата(IgorKossak @ May 11 2007, 02:23) *
А ей и есть до фени. По крайней мере проекты, собранные в ИАР, поддерживаются (выходной формат ubrof8).
В формате elf (coff, dwarf или что у него там ещё), выдаваемом WinAVR, поддержка С++ тоже должна быть.

mdmitry в частности ответил. От себя добавлю, C++ для AVR не помеха (и наоборот).

Но почему же она относится к файлам *.cpp как other. Я хочу использовать AVRStudio как программу разработки и прошивки. А не через сторонние программы. Написал в ней, собрал проект и прошил - ВСЁ. А она не позволяет (по крайней мере в явном виде) работать с С++, на котором я надумал писать программы.
Кто может помочь?
Или запопробывать ИАР?
Go to the top of the page
 
+Quote Post
dxp
сообщение May 11 2007, 05:30
Сообщение #14


Adept
******

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



Цитата(mdmitry @ May 11 2007, 03:04) *
>mdmitry, dxp, не начинайте религиозный спор.
Религиозные споры не люблю!

Аналогично. beer.gif Просто расставим точки над '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).

С++ не является только лишь объектно-ориентированным - он поддерживает различные способы/методы (парадигмы) программирования - в какой-то книжке так и было написано "мультипарадигменный ЯП" (книжку точно не скажу, насколько помню, это "Дизайн и эволюция С++" Б.Срауструпа, но могу ошибаться). Т.е. на С++ можно одновременно использовать и процедурное программирование, и объектно-ориентированное и даже в каком-то виде функциональное, хотя напрямую сам ЯП это не поддерживает и достигается это с помощью сторонних библиотек.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
forever failure
сообщение May 11 2007, 05:42
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Уже ведь сказали выше - создаёте в проекте свой Makefile, а в опциях проекта выбирает - "use external makefile".
В Makefile пишете чо-нить навроде:

all: main.cpp
avr-g++ -mmcu=atmega128 main.cpp -o avr-g++.elf

А в проект добавляете main.cpp. И всё работает/компилируется/прошивается.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 18:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016