Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 19:42:41

Почему этот код вызывает ошибку в Keil 5 (на C++)?

Портирую код с AVR, затык на ровном месте:

Код:
unsigned char portlcd = 0; //ячейка для хранения данных порта микросхемы расширения
const unsigned char rr = 0b01001110;
I2C_SendByteByADDR(portlcd|=0x04,0b01001110);


строки 2 и 3 вызывают ошибки:

user\lcdtwi.cpp(5): error: #65: expected a ";"

user\lcdtwi.cpp(73): error: #18: expected a ")"

Что не так?!

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 19:56:30

Тяжело сказать, не видя остального кода.
В каком месте вызываете функцию I2C_SendByteByADDR ? Не там ли, где коду обитать недопустимо ?

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:01:44

Вот проект: https://yadi.sk/d/tCCR1lAX9mj4FQ

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:08:17

на сколько я знаю, префикс 0b (для двоичных констант) не является стандартным для Си

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:21:13

Как заставить Keil его понимать?

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:27:37

Двоичные константы появились в С++14. Умеет keil C++14?

ЗЫ: гугл говорит, что умеет. Включи его поддержку.
Последний раз редактировалось VladislavS Сб ноя 24, 2018 20:31:50, всего редактировалось 1 раз.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:31:11

Умеет keil C++14?

Умеет, по крайней мере если компилятор от ARM выбрать.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:32:41

А где он выбирается?

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:37:49

В настройках проекта вестимо. Там вкладок то с гулькин нос. Вангую она С/С++ называется.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:42:35

Ну и где?
Изображение
Вложения
Безымянный.png
(16.95 KiB) Скачиваний: 1530

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:50:21

DENIS451, ты издеваешься? Вкладку Target открой и выбери компилятор 6-й версии.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:55:25

Первая же картинка в гугле.

СпойлерНе использую не значит не видел. Естественно, я знаю его возможности и мне они не подходят. Потому и не использую.
Последний раз редактировалось VladislavS Сб ноя 24, 2018 20:57:26, всего редактировалось 1 раз.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 20:56:56

VladislavS писал(а):Двоичные константы появились в С++14.
В GCC даже в Си они поддерживаются.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 21:00:49

Спасибо, сделал как на картинках, вроде заработало.

Но теперь появляются какие то подозрительные крестики в редакторе кода - см. 4.png
Вложения
4.png
(80.11 KiB) Скачиваний: 316
Безымянный3.png
(17.26 KiB) Скачиваний: 280
Безымянный2.png
(22.61 KiB) Скачиваний: 537

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 21:07:51

VladislavS писал(а):Двоичные константы появились в С++14.
В GCC даже в Си они поддерживаются.
Это конечно замечательно, но потом появляется такой DENIS451, жертва нестандартных расширений GCC - Аааа! Всё пропало!!!

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 21:17:53

С крестиками я уже сам разобрался, похоже Keil не мог найти файл исходников в директории "user" сам, а вот компилятор почему то смог.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 21:18:54

Как заставить Keil его понимать?

отказаться от двоичных констант, использовать те, которые обязаны понимать ВСЕ компиляторы Си: десятичные, восьмеричные или шестнадцатеричные

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 21:26:45

Либо использовать С++ компилятор даже для С кода. Тогда, например, можно разряды отделять вот так 0b0000'1111'0000'1111 или 10'000.

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 22:21:04

Рано радовался, после переключения на компилятор v6 проект собирается без ошибок, только в контроллере он
перестаёт работать!

Re: Почему этот код с AVR вызывает ошибку в Keil 5 (на C++)?

Сб ноя 24, 2018 22:37:45

Проц на 72 МГц включил и FLASH_Latency_2 не поставил?

PS: Или опять BOOT0 не туда перемкнут ? :)
Ответить