liststructs.h:
struct _data_object {
int temp;
int interval_length;
};
typedef struct _data_object temp_data_object;
struct _list_node {
data_object *temp_data;
struct _list_node *prev;
struct _list_node *next;
};
typedef struct _list_node list_node;
struct _list {
int time;
list_node *head;
list_node *tail;
};
typedef struct _list list;
list.h:
list_node *alloc_node(int temp, int interval_length);
list_node *alloc_dummy_node(void);
list *alloc_temp_list(void);
void delete_first(list *list);
void insert_node(list *list, list_node *new_node);
void insert(list *list, int temperature, int interval);
然后,我在另一个名为
calculations.c
和main.c
的文件中使用它,但是随后我在extern list *xs;
(在calculations.h
中定义)中声明了calculations.c
,它抱怨:Error[Pe020]: identifier "list" is undefined
我在
liststructs.h
和list.h
中按此顺序包含了calculations.c
和main.c
,并且想在xs
和calculations
中使用main
。也:
什么是更好的?要在同一标头中声明结构或列表操作还是将它们分开?
最佳答案
用#include
防护措施保护包含文件,在liststructs.h
中包含list.h
,并在calculations.h
中两个文件。头文件中的保护措施通常写为:
#ifndef _XXXX_H_ // XXXX = LIST, LISTSTRUCT etc
#define _XXXX_H_
// definitions for file XXXX.h
#endif /* _XXXX_H_ */
关于c - LinkedList,结构包含问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8588314/