我正在编写一个包含某些操作的自定义列表,但我遇到了错误的" deferencing指向不完整类型错误" 这是结构定义:
typedef struct TIME_NODE {
int timeout;
int seq_number;
struct time_node* next;
} time_node;
typedef struct TIMEOUT_LIST {
struct time_node* head;
} timeout_list;
这是其中一个功能
void insert(timeout_list *l, int sequence_number, int timeout)
{
int c=0;
struct time_node* temp;
temp = l->head;
if(temp==NULL)
{
add(sequence_number, timeout);
}
else
{
while(temp!=NULL)
{
if(temp->timeout < timeout) {
c++;
}
temp = temp->next;
}
if(c==0)
add(sequence_number, timeout);
else if(c<count())
add_after(sequence_number, timeout, ++c);
else
append(sequence_number, timeout);
}
}
为什么我不能谦虚?
答案 0 :(得分:2)
这是错误的
struct time_node* temp;
应该是
struct TIME_NODE* temp;
但是因为你有typedef
编辑它,所以这应该足够了
time_node* temp;
你应该在struct TIMEOUT_LIST
修复它。
如果您希望任何一种语法都可以使用,那么您必须为结构使用相同的名称,并使用typedef
这样的名称
typedef struct time_node {
int timeout;
int seq_number;
struct time_node* next;
} time_node;
你甚至可以这样做
typedef struct time_node time_node;
struct time_node {
int timeout;
int seq_number;
time_node* next;
};
答案 1 :(得分:1)
typedef struct TIME_NODE {
int timeout;
int seq_number;
struct time_node* next;
} time_node;
这将创建一个名为TIME_NODE
的结构类型(可以使用struct TIME_NODE
进行声明,然后将其定义为time_node
。
您需要使用struct TIME_NODE*
类型或time_node*
声明变量。