我正在用 gcc 在 eclipse 中编写一个嵌入式 C 程序,但看不到如何解决某个问题。我在头文件中有一个 typedef,它受包含保护。由于我在多个头文件中使用此 typedef,因此我需要将其包含在其他头文件中,但是当我尝试编译时,无论我做什么,其中一个头文件都看不到 typedef 并抱怨未知类型名称。
我相信这说明了问题:
标题啊:
#ifndef _a_h
#define _a_h
typedef enum {
USBD_OK = 0,
USBD_BUSY,
USBD_FAIL,
}USBD_Status;
#endif
标题 bh:
#ifndef _b_h
#define _b_h
#include "a.h"
extern USBD_Status USB_getStatus(void);
#endif
标题通道:
#ifndef _c_h
#define _c_h
#include "a.h"
extern USBD_Status USBD_Sync(void);
#endif
这似乎总是导致错误“未知类型名称'USBD_Status'”,因为第二个编译的任何头文件都看不到typedef。从 ah 中删除包含保护会导致抱怨 USBD_Status 正在被重新声明。
编辑:我已经仔细检查了所有包含路径、所有包含、所有文件名和所有包含保护 - 没有重复或拼写错误。