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