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.cmain.c的文件中使用它,但是随后我在extern list *xs;(在calculations.h中定义)中声明了calculations.c,它抱怨:
Error[Pe020]: identifier "list" is undefined

我在liststructs.hlist.h中按此顺序包含了calculations.cmain.c,并且想在xscalculations中使用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/

10-11 04:28