gcc を使用して Eclipse で組み込み C プログラムを作成していますが、特定の問題を回避する方法がわかりません。インクルード ガードで保護されているヘッダー ファイルに typedef があります。この typedef を複数のヘッダーで使用しているため、他のヘッダーに含める必要がありますが、コンパイルしようとすると、何をしても、ヘッダーの 1 つが 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
これは、2 番目にコンパイルされたヘッダーが typedef を認識できないため、常に「unknown type name 'USBD_Status'」というエラーが発生するようです。ah からインクルード ガードを削除すると、USBD_Status が再宣言されているという苦情が発生します。
編集: すべてのインクルード パス、すべてのインクルード、すべてのファイル名、およびすべてのインクルード ガードを再確認しました - 重複やタイプミスはありません。