Перейти к содержанию

    

Keil C51 + библиотеки FT800

Здравствуйте!

Есть ЖК-индикатор от Riverdi с контроллером FT812. Хотелось бы использовать их готовые библиотеки для работы с индикатором. Но в Си пока не очень. Пытаюсь подключить библиотеки к проекту. Компилятор выдает ошибки, причем на мой взгляд беспочвенные. Компилятор Keil C51. Ошибки в приложенном снимке экрана. Первые две строки на которые он ругается выделены в коде желтым цветом. Кто нибудь может подсказать в чем проблема???

post-58126-1453986165_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Кто нибудь может подсказать в чем проблема???

Транслятор ругается на анонимный union.

Давно не использую МК51, поэтому не могу подсказать: как выйти из такого положения? Возможно (но не факт ! ), следует взять одну из последних версий Keil...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С последним keil тоже самое. У меня есть предположение, что может не хватать каких то библиотек. Но вот каких???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело не в библиотеках, а в анонимных 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 - не знаю, проверить не на чем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация