所以我有这个代码,下面给出了代码片段。
list* init(list* list1)
{
list1->head = NULL;
list1->size = 0;
return list1;
}
list1是一个链表,从main函数调用init。
现在在list1->head= NULL
行上,在我运行代码之后,它会突出显示这一特定行并说
未指定模块定义文件:使用默认值。
它停止了执行。
我在Windows 7上使用turbo C.
我该怎么办? 我应该发布完整的代码..虽然有点大..
答案 0 :(得分:0)
NULL在<中定义stddef.h>对于C,等价于< cstddef>对于C ++。
答案 1 :(得分:0)
根据我们在评论中的讨论,它看起来像是一系列因素。
首先,看来Turbo C编译器不知道NULL是什么。由于NULL只是0的typedef,因此可以使用0代替。
其次,您似乎没有为列表对象分配内存。在调用函数之前,请尝试执行以下操作。
list* list1 = malloc(sizeof(list));
但是,如果你要做的是创建并初始化一个新的list
对象,你最好重写函数,如下所示:
list* init(){
list *new_list = malloc(sizeof(list));
new_list->head = 0; // <-- this sets head to the equivalent of NULL
new_list->size =0;
return new_list;
}
如果您想要的是重新初始化现有列表的功能,那么无论如何您都会使用当前代码导致内存泄漏。