Если тебе удалось обмануть человека, то это не значит, что он дурак. Это лишь значит, что тебе доверяли больше, чем ты того заслуживаешь.

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

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/). Статья не столько к Ардуино относится, сколько вообще к стандартам языка, которые работают везде.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.