头文件中的Typedef对包含它的另一个文件不可见

时间:2015-01-30 16:40:22

标签: c struct include typedef ifndef

我在C中遇到以下问题: 我在头文件中为结构声明了一个typedef(" mep.h")

#ifndef MEP_H
#define MEP_H

typedef struct Mep_tag Mep;
<other stuff declared here>

#endif

我使用另一个包含&#34; mep.h&#34;的头文件(&#34; mep_types.h&#34;),定义结构&#34; Mep_tag&#34;并使用&#34; Mep&#34;类型名称:

#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

由于某些原因,当编译时,我收到以下错误: &#34; mep_types.h:错误:未知类型名称&#34;&#39; Mep&#39;&#34;。

但是,如果在&#34; mep.h&#34;我将typedef放在ifndef后面这样的......

typedef struct Mep_tag Mep;

#ifndef MEP_H
#define MEP_H

<other stuff declared here>

#endif

...&#34; Mep&#34;类型名称在&#34; mem_types.h&#34;。

中可见

有人知道这会怎么样吗?

0 个答案:

没有答案