我是模块化编程的新手,我希望你能帮助我:) 所以这是我的.c .h: item.h
#define L 31
#define L1 11
typedef struct{
int priority;
char service_type[L];
char client_code[L1];
}*Item;
Item New_client();
item.c
#include <stdio.h>
#include <stdlib.h>
#include "item.h"
Item New_client(){
Item new_c=malloc(sizeof new_c);
printf("Inserire priorita': "); scanf("%d",&new_c->priority);
printf("Inserire servizio: "); scanf("%s",new_c->service_type);
printf("Inserire codice cliente: "); scanf("%s",new_c->client_code);
return new_c;
}
PQ.h
typedef struct Nodo *link;
struct Nodo{
Item item;
link next;
};
void init(link coda);
int empty_(link coda);
link insert_(link h,Item client);
PQ.c
#include <stdio.h>
#include <stdlib.h>
#include "PQ.h"
因此,当我在PQ.c中包含PQ.h时,我收到错误:来自CodeBlocks的未知类型名称'Item'...我无法弄清楚为什么以及如何解决问题。
答案 0 :(得分:1)
您应该在item.h
:
PQ.h
#include "item.h"
typedef struct Nodo *link;
struct Nodo{
Item item;
link next;
};
void init(link coda);
int empty_(link coda);
link insert_(link h,Item client);
更新:关于错误:“商品”的冲突类型
这个因为预处理器包括item.h
两次。您应该使用#ifndef __HEADER_NAME__
,#define __HEADER_NAME__
,#endif
组合来封装标题。了解如何为item.h完成:
#ifndef __ITEM_H__
#define __ITEM_H__
#define L 31
#define L1 11
typedef struct{
int priority;
char service_type[L];
char client_code[L1];
}*Item;
Item New_client();
#endif //__ITEM_H__