未指定模块定义文件

时间:2011-09-09 17:47:08

标签: c turbo-c

所以我有这个代码,下面给出了代码片段。

list* init(list* list1)
{
  list1->head = NULL;
  list1->size = 0;
  return list1;
}

list1是一个链表,从main函数调用init。 现在在list1->head= NULL行上,在我运行代码之后,它会突出显示这一特定行并说

未指定模块定义文件:使用默认值。

它停止了执行。

我在Windows 7上使用turbo C.

我该怎么办? 我应该发布完整的代码..虽然有点大..

2 个答案:

答案 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;
}

如果您想要的是重新初始化现有列表的功能,那么无论如何您都会使用当前代码导致内存泄漏。