Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil C51 + библиотеки FT800
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Makarov
Здравствуйте!
Есть ЖК-индикатор от Riverdi с контроллером FT812. Хотелось бы использовать их готовые библиотеки для работы с индикатором. Но в Си пока не очень. Пытаюсь подключить библиотеки к проекту. Компилятор выдает ошибки, причем на мой взгляд беспочвенные. Компилятор Keil C51. Ошибки в приложенном снимке экрана. Первые две строки на которые он ругается выделены в коде желтым цветом. Кто нибудь может подсказать в чем проблема???
Палыч
Цитата(Makarov @ Jan 28 2016, 17:07) *
Кто нибудь может подсказать в чем проблема???

Транслятор ругается на анонимный union.
Давно не использую МК51, поэтому не могу подсказать: как выйти из такого положения? Возможно (но не факт ! ), следует взять одну из последних версий Keil...
Makarov
С последним keil тоже самое. У меня есть предположение, что может не хватать каких то библиотек. Но вот каких???
DPL
Дело не в библиотеках, а в анонимных union, как заметили выше. Кстати, Keil для ARM их тоже не любит.
Чтобы исправить ситуацию, в первой строке, выделенной жёлтым, надо между скобкой и точкой с запятой указать произвольный идентификатор, уникальный в пределах описания typedef struct {...} Ft_Gpu_Hal_Config_t. То же самое нужно сделать для второго union (желтым не выделено):

Код
typedef struct {
  union {
    ....
  } AnyName1;
  union {
    ....
  } AnyName2;
  ...
} Ft_Gpu_Hal_Config_t;

В приведённом примере это идентификаторы AnyName1 и AnyName2. Правда в этом случае придётся править и обращения к полям структуры, а это может быть муторно, если таких обращений много.

В Keil для ARM можно разрешить анонимные union директивой #pragma anon_unions - тогда описания и обращения править не придётся.
Можно ли это сделать для Keil51 - не знаю, проверить не на чем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.