如果我malloc
在我的代码中使用:
int *x = malloc(sizeof(int));
我从以下位置收到此警告gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
您需要添加:
#include <stdlib.h>
该文件包括内置函数的声明malloc
。如果你不这样做,编译器会认为你想定义你自己的命名函数malloc
,它会警告你,因为:
int
,这与内置函数不兼容in malloc
,它接受 asize_t
并返回 a void*
)。你还没有做#include <stdlib.h>
。
您需要包含声明函数的头文件,例如:
#include <stdlib.h>
如果不包含此头文件,则编译器不知道该函数。所以它认为它是未声明的。
养成在帮助中查找函数的习惯。
C 语言的大多数帮助都是以 unix 手册页为模型的。
使用 :
man malloc
给出了非常有用的结果。
谷歌搜索man malloc
会告诉你我的意思。
在 unix 中,您还可以对相关的事物进行适当的处理。
除了其他非常好的答案之外,我想做一点点挑剔并涵盖其他答案中尚未讨论的内容。
当你在 Linux 时,要malloc()
在你的代码中使用,
你实际上不必 #include <stdlib.h>
。
(虽然使用stdlib.h
非常普遍,可能每个非玩具程序都应该包含它,因为它提供了广泛的有用的 C 标准库函数和宏)
你也可以#include <malloc.h>
代替。
但请注意,malloc.h
不推荐使用 ,它会使您的代码不可移植。如果你想使用malloc()
你应该永远和永远(除非有明确的理由不这样做)#include <stdlib.h>
。
的原因,最好在这个问题的答案中解释: