Каково решение, когда компилятор не может найти определенные пользователем типы данных из включенного файла.h?
Сообщество Hello Stack Overflow,
У меня очень странная ошибка компилятора, когда я пытаюсь скомпилировать пример кода для приложения на клавиатуре USB, полученный из Freescale MQX. В usb_descriptor.c он имеет:
`usb_language_t g_usb_language[USB_MAX_SUPPORTED_INTERFACES] =
{
{
(uint16_t) 0x0409,
g_string_descriptors,
g_string_desc_size
}
};
/*************************************/
usb_all_languages_t g_languages =
{
g_usb_str_0,
sizeof(g_usb_str_0),
USB_MAX_LANGUAGES_SUPPORTED,
g_usb_language
};`
/ ****************************** /
uint8_t USB_Desc_Set_Speed
(
uint32_t handle,
uint16_t speed
)
{
descriptor_union_t ptr1, ptr2;
UNUSED_ARGUMENT(handle);'
usb_language_t
, usb_all_languages_t
& descriptor_union_t
определены в файле usb_desc.h следующим образом:
typedef struct _usb_language
{
uint16_t language_id;
uint8_t ** lang_desc;
uint8_t * lang_desc_size;
} usb_language_t;
typedef struct _usb_all_languages
{
uint8_t *languages_supported_string;
uint8_t languages_supported_size;
uint8_t languages_number;
/*Allocate Memory In App Layer*/
usb_language_t *usb_language;
} usb_all_languages_t;
typedef union descriptor_union
{
uint32_t word;
uint8_t * bufr;
void* pntr;
device_descriptor_t dvic;
usb_configuration_descriptor_t* cfig;
interface_descriptor_t* intf;
endpoint_descriptor_t* ndpt;
qualifier_descriptor_t* qual;
otg_descriptor_t* otg;
common_descriptor_t* common;
} descriptor_union_t;
Однако даже после того, как я #include "usb_desc.h"
в начале usb_descriptor.c я получаю сообщения об ошибках, которые
Ошибка [Pe020]: идентификатор "usb_language_t" не определен
Ошибка [Pe020]: идентификатор "usb_all_languages_t" не определен
Ошибка [Pe020]: идентификатор "descriptor_union_t" не определен
Может кто-нибудь помочь мне с этим? Я использую IAR для разработки с MQX 4.0.2 RTOS. Кроме того, я пытаюсь интегрировать приложение устройства клавиатуры USB в уже существующую прошивку.
Заранее спасибо!