为什么每次使用malloc时都会收到警告?
问题描述:
如果我在我的代码使用malloc
:为什么每次使用malloc时都会收到警告?
int *x = malloc(sizeof(int));
我得到这样的警告从gcc
:
new.c:7:警告:函数 '的malloc'
new.c的隐式声明:7:警告:内置函数'malloc'的不兼容隐式声明
答
您需要添加:
#include <stdlib.h>
此文件包含内置功能malloc
声明。如果你不这样做,编译器会认为你要定义你自己的函数命名malloc
和它警告你,因为:
- 你没有明确声明它和
- 已经有一个内置-in函数的名称具有与隐式声明不同的签名(当函数被隐式声明时,其返回和参数类型被假定为
int
,这与内置的malloc
不兼容,需要size_t
并返回void*
)。
答
您还没有做过#include <stdlib.h>
。
答
您需要包括一个声明函数的头文件,例如:
#include <stdlib.h>
如果不包括此头文件,该功能是不知道的编译器。所以它认为它是未声明的。
答
养成了在帮助中查看功能的习惯。
C的大部分帮助都是在unix手册页上建模的。
man malloc
给出了相当有用的结果。
googling man malloc会告诉你我的意思。
当然在unix中,你也可以得到apropos相关的东西。
+1对于消息的实际描述 – 2009-08-07 11:28:30
术语nit:C中没有内置函数这样的事情。malloc只是标准C库中的函数。 – Jens 2012-10-13 14:55:45