错误:未知的类型名称

时间:2015-11-27 18:49:38

标签: c

我是模块化编程的新手,我希望你能帮助我:) 所以这是我的.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'...我无法弄清楚为什么以及如何解决问题。

1 个答案:

答案 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__