这是一段代码片段,我在其中使用一个数组的元素来填充列表。
最后,listpop.h 文件中的代码如下:
#include <stdlib.h>
#include <stdio.h>
#include "../../lib/kernel/list.h"
#include "./listpop.h"
struct item {
struct list_elem elem;
int value;
int priority;
};
void populate(struct list * l, int * a, int n);
void populate(struct list * l, int * a, int n)
{
int i = 0;
while(i != n) {
struct item * newitem = malloc(sizeof(struct item));
newitem->value = a[i];
list_push_back(l,newitem);
i++;
}
}
void test_assignment_1()
{ struct list our_list;
list_init(&our_list);
populate(&our_list, ITEMARRAY, ITEMCOUNT);
}
list.h中的代码:
/* List element. */
struct list_elem
{
struct list_elem *prev; /* Previous list element. */
struct list_elem *next; /* Next list element. */
};
/* List. */
struct list
{
struct list_elem head; /* List head. */
struct list_elem tail; /* List tail. */
};
void list_init (struct list *);
list.c中的代码:
/* Initializes LIST as an empty list. */
void
list_init (struct list *list)
{
ASSERT (list != NULL);
list->head.prev = NULL;
list->head.next = &list->tail;
list->tail.prev = &list->head;
list->tail.next = NULL;
}
最后,listpop.h 文件中的代码如下:
#define ITEMCOUNT 10
int ITEMARRAY[ITEMCOUNT] = {3,1,4,2,7,6,9,5,8,3};
以下是我的警告:
warning: 隐含声明函数‘malloc’
warning: 不兼容的内建函数‘malloc’的隐含声明
到目前为止,我读到的关于这些警告的所有信息都是添加stdlib.h库,但是从我的代码中可以看出,我已经添加了,但仍然会给我这些警告。我已经多次重启了代码,所以错误肯定在代码中。
有人知道这里有什么问题吗?