警告:函数'malloc'的隐式声明,即使包含在内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了警告:函数'malloc'的隐式声明,即使包含在内相关的知识,希望对你有一定的参考价值。

这是一段代码的摘录,在这里我用一个数组的元素填充了一个列表。

#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: implicit declaration of function ‘malloc’

warning: incompatible implicit declaration of built-in function ‘malloc’

到目前为止,我对这些警告的了解仅是添加stdlib.h,但是正如您从我的代码中看到的那样,我已经完成了,并且代码仍然会给我这些警告。我已经多次重新启动代码,因此错误位于代码中的某个位置。

任何人都知道这里不起作用吗?

答案
您可能正在使用不合格的编译器和/或C库在过时的系统上进行编译。尝试除<malloc.h>之外还包含<stdlib.h>,请始终先包含标准标头。

以上是关于警告:函数'malloc'的隐式声明,即使包含在内的主要内容,如果未能解决你的问题,请参考以下文章

抑制从 void ** 到另一个 ** 的隐式类型转换的警告的方法?

警告:从枚举类型“UIInterfaceOrientation”到不同枚举类型“UIDeviceOrientation”的隐式转换?

警告:函数的隐式声明

警告:函数的隐式声明

为啥 gcc 给出警告:函数 qsort_r 的隐式声明?

多个目标匹配链接器标志的隐式依赖关系