以下に示すように、2つのパラメーターを持つマクロを定義しました。
#define DO_LIST_HEADER(Titem,MAX) typedef struct {\
int count;\
Titem array[MAX];\
} TOrderedList##Titem;\
\
void initialize_list##Titem(TOrderedList *list);\
int insert_item##Titem(TOrderedList *list, Titem item);\
int retrieve_ith##Titem(const TOrderedList *list, int i, Titem *item);\
int number_of_items##Titem(const TOrderedList *list);\
int list_empty##Titem(const TOrderedList *list);
.c
これはヘッダーファイルにあり、ヘッダーを含む別のファイルからこのマクロを「呼び出そう」とすると、
typedef Ttime Titem;
DO_LIST_HEADER(Ttime,10)
ここで、というエラーが表示されますincomplete type not allowed
。
なぜこのタイプのエラーが発生するのですか?
DO_LIST_HEADER
マクロには、パラメータとして含む関数プロトタイプが含まTtime
れています。