C 当编译器无法从包含的.h文件中找到用户定义的数据类型时,解决方案是什么?

C 当编译器无法从包含的.h文件中找到用户定义的数据类型时,解决方案是什么?,c,iar,mqx,C,Iar,Mqx,你好,Stack Overflow社区 当我试图为从飞思卡尔MQX获得的USB键盘设备应用程序编译示例代码时,我遇到了一个非常奇怪的编译器错误。在usb_descriptor.c中,它具有: `usb_language_t g_usb_language[USB_MAX_SUPPORTED_INTERFACES] = { { (uint16_t) 0x0409, g_string_descriptors, g_string_desc_size

你好,Stack Overflow社区

当我试图为从飞思卡尔MQX获得的USB键盘设备应用程序编译示例代码时,我遇到了一个非常奇怪的编译器错误。在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\u language\u t
usb\u所有语言\u t
描述符\u union\u t
在usb\u 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;
然而,即使在我在usb描述符的开头添加了“usb描述”c之后,我仍然会收到错误消息

错误[Pe020]:标识符“usb语言”未定义

错误[Pe020]:标识符“usb所有语言”未定义

错误[Pe020]:标识符“描述符联合”未定义

有人能帮我解决这个问题吗?我正在使用IAR进行MQX 4.0.2 RTOS的开发。此外,我正在尝试将USB键盘设备应用程序集成到预先存在的固件中


提前谢谢你

如果我们要帮忙,你需要提出一个建议。我们感谢您尝试最小化所提供的代码,但您似乎已经将实际问题最小化了。但是,如果您所提供的一切都是正确的,那么最有可能的解释是相关的
#include
来得太晚,或者所需的声明被条件编译指令抑制。如何编译代码,typedefs周围是否有一些
#if
宏?@JohnBollinger你说得对!我把相关的include文件换到了第一个位置,它成功了。谢谢“从现在起,我将尝试更详细地阐述。”purplepsycho no没有“如果”指令。谢谢你。。