我的 IDE 是C-free 5.0,编译器是MinGW。
我有两个文件:'list.h','list.c'
列表.h:
typedef int elementType;
#ifndef _LIST_H
#define _LIST_H
struct node;
typedef struct node* ptrToNode;
typedef ptrToNode list;
typedef ptrToNode position;
list makeEmpty(list l);
#endif
列表.c:
#include <stdio.h>
#include "list.h"
#include <stdlib.h>
struct node{
elementType element;
position next;
};
list makeEmpty(list l){
if(l == NULL){
//delete list
}
l = malloc(sizeof(struct node));
if(l == NULL){
printf("fail to malloc memory");
exit(-1);
}
l->next = NULL;
return l;
}
我尝试编译这些文件然后出现错误
"list.c:5: redefinition of 'struct node'"
然后我将所有的“节点”替换为“节点”,神奇的事情发生了!编译正常!我真的无法理解这一点。这可能与C库有关吗?