15 Июль, 2020, 06:49

Подбитый глаз уменьшает обзор, но увеличивает опыт.


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 прямо говорит, что используется смешанный синтаксис C/C++ (хотя на родном сайте об этом прямо вот так и не указано).

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

AVR-GCC - это по-умолчанию "гнутый" Цэ (GNU C - один из стандартов классического С), однако источники уверяют, что он вполне умеет переключаться на интерпретацию C++ (как пруф), но, честно признаюсь, что я сам тонкостями не владею.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

Nikopol


Slabovik

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

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