Я пишу встроенную программу C в eclipse с gcc и не вижу, как обойти определенную проблему. У меня есть typedef в заголовочном файле, который защищен защитой включения. Поскольку я использую этот typedef в нескольких заголовках, мне нужно включить его в другие заголовки, однако, когда я пытаюсь скомпилировать, независимо от того, что я делаю, один из заголовков не видит typedef и жалуется на неизвестное имя типа.
Я считаю, что это иллюстрирует проблему:
заголовок а.ч:
#ifndef _a_h
#define _a_h
typedef enum {
USBD_OK = 0,
USBD_BUSY,
USBD_FAIL,
}USBD_Status;
#endif
заголовок б.ч:
#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. Удаление защиты включения из a.h приводит к жалобе на повторное объявление USBD_Status.
редактировать: я дважды проверил все пути включения, все включения, все имена файлов и все включения защиты - нет дубликатов или опечаток.
b.h
иc.h
. - person durron597   schedule 20.11.2012