Typedef в заголовочном файле не виден другому файлу, который включает его
Я сталкиваюсь со следующей проблемой в C: я объявляю typedef для структуры в файле заголовка ("mep.h")
#ifndef MEP_H
#define MEP_H
typedef struct Mep_tag Mep;
<other stuff declared here>
#endif
Я использую другой заголовочный файл ("mep_types.h"), который включает в себя "mep.h", определяет структуру "Mep_tag" и использует имя типа "Mep":
#ifndef MEP_TYPES_H
#define MEP_TYPES_H
#include "mep.h"
#include "file1.h"
struct Mep_MsgElement_tag
{
const Mep * MsgCh;
};
struct Mep_tag
{
<stuff in here>
};
#endif
По какой-то причине, когда это компилируется, я получаю следующую ошибку: "mep_types.h: error: неизвестное имя типа"'Mep'".
Однако, если в "mep.h" я помещаю typedef вне защиты ifndef, вот так...
typedef struct Mep_tag Mep;
#ifndef MEP_H
#define MEP_H
<other stuff declared here>
#endif
... имя типа "Mep" видно в "mem_types.h".
Может кто-нибудь знает, как это могло произойти?