Тот, кто кусает руку, кормящую его, обычно лижет сапог, который его пинает.

Меню навигации для мобильных

AVR на чем пишутся программы С или С++?

Автор Nikopol, 06 Июнь, 2020, 02:42

« предыдущая - следующая »

Nikopol

Дратути.
Я хочу научиться программировать AVR микроконтроллеры и поэтому изучаю С.
Начал с ардуинок и когда перешел на изучение С заметил, что в среде ардуино програмирование идет скорее на C++ чем на С. Т.е. команды которые я вводил в ардуинке не работают на чистом С, но присутствуют в C++.
Например:
enum DAYS {i=1, o,a,s,d,f,g};
 DAYS day;
 day = DAY::i;
Работает в ардуинке, но не работает на чистом С. Там нужно писать так:
enum DAYS {i=1, o,a,s,d,f,g};
 enum DAYS day;
 day = i;

Т.е. получается что в ардуинке свой компилятор который понимает C++, а стандартный (под linux) avr-gcc понимает только С? Или есть ещё какие то компиляторы которые для AVR которые понимают С++?

Slabovik

Учебник по Arduino IDE (http://arduino.ru/Reference) прямо говорит, что используется смешанный синтаксис C/C++ (хотя на родном сайте (https://www.arduino.cc/reference/en) об этом прямо вот так и не указано).

Я тоже заметил, что Arduino IDE допускает достаточно много вольностей с синтаксисом исходного кода. Наверное, для неискушённых оно и ничего (ибо нет нужды заморачиваться тонкостями), но нужно быть готовым, что при попытке откомпилировать код вне среды, будут вдруг обнаружены сложности.

AVR-GCC - это по-умолчанию "гнутый" Цэ (GNU C - один из стандартов (https://ru.wikipedia.org/wiki/GNU_Compiler_Collection) классического С), однако источники уверяют, что он вполне умеет переключаться на интерпретацию C++ (как пруф (https://habr.com/ru/post/149683/)), но, честно признаюсь, что я сам тонкостями не владею.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

Nikopol


Slabovik

Да, разбирая (скорее развлекаясь) Хабр (https://habr.com/ru/), наткнулся на одну статью, которая также может помочь в процессе: Программируем Arduino на чистом Си (https://habr.com/ru/post/247663/)

и, да, вот это тоже неплохо, когда начинаешь погрязать в типах и ссылках на них (там реальный мозговорот происходит)
Указатели, ссылки и массивы в C и C++: точки над i (https://habr.com/ru/post/251091/). Статья не столько к Ардуино относится, сколько вообще к стандартам языка, которые работают везде.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.