C で次の問題が発生しています。ヘッダーファイル ("mep.h") で構造体の typedef を宣言しています。
#ifndef MEP_H
#define MEP_H
typedef struct Mep_tag Mep;
<other stuff declared here>
#endif
「mep.h」を含む別のヘッダーファイル (「mep_types.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: unknown type name "'Mep'".
ただし、「mep.h」で、このように ifndef ガードの外に typedef を配置すると...
typedef struct Mep_tag Mep;
#ifndef MEP_H
#define MEP_H
<other stuff declared here>
#endif
... 「mem_types.h」に「Mep」型名が表示されます。
誰かがこれがどのように起こるか知っているでしょうか?