内置函数'malloc'的不兼容隐式声明


155

我收到此错误:

警告:内置函数“ malloc”的隐式声明不兼容

我正在尝试这样做:

fileinfo_list* tempList = malloc(sizeof(fileinfo_list));

仅供参考,手头使用的结构是:

typedef struct {
    fileinfo** filedata;
    size_t nFiles;
    size_t size;
    size_t fileblock;
} fileinfo_list;

我认为自己所做的没有任何问题。我只是创建一个tempList1 x的大小fileinfo_list


Answers:


340

您可能忘了包括 <stdlib.h>


1
嗯,谢谢:)仍然掌握了C的知识,第一个C程序来自Java :)
SGE

包含<stdlib.h>警告后将其替换为错误error: conflicting types for 'malloc'
Christos Karapapas

46

您需要#include <stdlib.h>。否则,将其定义为int malloc()与内置类型不兼容void *malloc(size_t)


当定义为时int malloc(),是否可以复制void *malloc(size_t)
user1343318 2014年

@ user1343318不一定,这正是发出警告的原因。例如:带有64位数据指针和32位int值的x64平台会吐出山羊屎,而x86 32位数据指针/ 32bit int似乎可以正常工作。都不是正确的,因为在任何情况下编译器都不会知道malloc实际返回的内容,并且不会int做出响应。
WhozCraig 2015年


4

stdlib.h文件包含malloc,calloc,realloc和free函数的头信息或原型。

因此,为避免在ANSI C中出现此警告,应包括stdlib头文件。


-4

此类警告的唯一解决方案是在程序中包含stdlib.h。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.