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".

Может кто-нибудь знает, как это могло произойти?

0 ответов

Другие вопросы по тегам