C 将指针延迟到自定义列表上的不完整类型
我正在编写一个自定义列表,其中包含一些操作,但我遇到了“将指针延迟到不完整类型错误”的问题 以下是结构定义:C 将指针延迟到自定义列表上的不完整类型,c,pointers,C,Pointers,我正在编写一个自定义列表,其中包含一些操作,但我遇到了“将指针延迟到不完整类型错误”的问题 以下是结构定义: 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 in
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);
}
}
void插入(超时\u列表*l,整数序列号,整数超时)
{
int c=0;
结构时间节点*temp;
温度=升->压头;
if(temp==NULL)
{
添加(序列号、超时);
}
其他的
{
while(temp!=NULL)
{
如果(临时->超时<超时){
C++;
}
温度=温度->下一步;
}
如果(c==0)
添加(序列号、超时);
否则,如果(c这是错误的
struct time_node* temp;
应该是
struct TIME_NODE* temp;
但是既然您已经typedef
ed了它,那么这就足够了
time_node* temp;
您也应该在struct TIMEOUT\u列表中修复它
如果您希望其中一种语法工作,那么必须对结构和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;
};
这是错误的
struct time_node* temp;
应该是
struct TIME_NODE* temp;
但是既然您已经typedef
ed了它,那么这就足够了
time_node* temp;
您也应该在struct TIMEOUT\u列表中修复它
如果您希望其中一种语法工作,那么必须对结构和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;
};
这是错误的
struct time_node* temp;
应该是
struct TIME_NODE* temp;
但是既然您已经typedef
ed了它,那么这就足够了
time_node* temp;
您也应该在struct TIMEOUT\u列表中修复它
如果您希望其中一种语法工作,那么必须对结构和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;
};
这是错误的
struct time_node* temp;
应该是
struct TIME_NODE* temp;
但是既然您已经typedef
ed了它,那么这就足够了
time_node* temp;
您也应该在struct TIMEOUT\u列表中修复它
如果您希望其中一种语法工作,那么必须对结构和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;
};
这将创建一个名为TIME\u NODE
(可以使用struct TIME\u NODE
声明)的结构类型,然后将其键入TIME\u NODE
您需要使用类型struct TIME\u NODE*
或TIME\u NODE*
声明变量
这将创建一个名为TIME\u NODE
(可以使用struct TIME\u NODE
声明)的结构类型,然后将其键入TIME\u NODE
您需要使用类型struct TIME\u NODE*
或TIME\u NODE*
声明变量
这将创建一个名为TIME\u NODE
(可以使用struct TIME\u NODE
声明)的结构类型,然后将其键入TIME\u NODE
您需要使用类型struct TIME\u NODE*
或TIME\u NODE*
声明变量
这将创建一个名为TIME\u NODE
(可以使用struct TIME\u NODE
声明)的结构类型,然后将其键入TIME\u NODE
您需要使用类型struct TIME\u NODE*
或TIME\u NODE*
声明变量。谢谢大家,解决了问题并理解了原因。我很高兴,您可以接受对您更有效的答案。注意:您可以省略struct TIMEOUT\u列表
和大部分{add,add\u after,append}使用指向指向struct THE_NODE
的指针作为函数参数的逻辑。感谢各位,解决了问题并理解了问题的原因。我很高兴,您可以接受对您更有效的答案。注意:您可以省略struct TIMEOUT_LIST
和大部分{add,add_after,append}使用指向指向struct THE_NODE
的指针作为函数参数的逻辑。感谢各位,解决了问题并理解了问题的原因。我很高兴,您可以接受对您更有效的答案。注意:您可以省略struct TIMEOUT_LIST
和大部分{add,add_after,append}使用指向指向struct THE_NODE
的指针作为函数参数的逻辑。感谢各位,解决了问题并理解了问题的原因。我很高兴,您可以接受对您更有效的答案。注意:您可以省略struct TIMEOUT_LIST
和大部分{add,add_after,append}通过使用指向指向\u节点
结构的指针作为函数参数的指针进行逻辑。