提问人:SGE 提问时间:8/13/2011 最后编辑:Peter MortensenSGE 更新时间:2/20/2021 访问量:222897
内置函数“malloc”的隐式声明不兼容
Incompatible implicit declaration of built-in function ‘malloc’
问:
我收到此错误:
警告:内置函数“malloc”的隐式声明不兼容
我正在尝试这样做:
fileinfo_list* tempList = malloc(sizeof(fileinfo_list));
仅供参考,手头使用的结构是:
typedef struct {
fileinfo** filedata;
size_t nFiles;
size_t size;
size_t fileblock;
} fileinfo_list;
我不认为我所做的事情有什么问题。我只是创建一个大小为 1 x 的 .tempList
fileinfo_list
答:
401赞
cnicutar
8/13/2011
#1
你可能忘记了#include <stdlib.h>
评论
1赞
SGE
8/13/2011
啊,谢谢:)仍然掌握 C 的窍门,第一个来自 java 的 C 程序:)
1赞
Christos Karapapas
11/6/2018
包含警告后,被错误取代<stdlib.h>
error: conflicting types for 'malloc'
16赞
Antti
8/13/2011
#2
你错过了.#include <stdlib.h>
48赞
Omri Barel
8/13/2011
#3
你需要.否则,它被定义为与内置类型不兼容。#include <stdlib.h>
int malloc()
void *malloc(size_t)
评论
0赞
user1343318
3/13/2014
当它被定义为 时,它会复制吗?int malloc()
void *malloc(size_t)
0赞
WhozCraig
5/13/2015
@user1343318 不一定,这正是警告的原因。例如:具有 64 位数据指针和 32 位值的 x64 平台会呕吐山羊粪便,而 x86 32 位数据指针/32 位似乎可以正常工作。两者都不正确,因为在这两种情况下,编译器都不知道实际返回的内容,并假设作为响应。int
int
malloc
int
-4赞
user3828152
7/11/2014
#4
此类警告的唯一解决方案是在程序中包含 stdlib.h。
5赞
santosh sahu
7/25/2014
#5
stdlib.h 文件包含 malloc、calloc、realloc 和 free 函数的头信息或原型。
因此,为了避免在 ANSI C 中出现此警告,应包含 stdlib 头文件。
评论