为什么每次使用malloc时都会收到警告?

问题描述:

如果我在我的代码使用malloc为什么每次使用malloc时都会收到警告?

int *x = malloc(sizeof(int)); 

我得到这样的警告从gcc

new.c:7:警告:函数 '的malloc'
new.c的隐式声明:7:警告:内置函数'malloc'的不兼容隐式声明

您需要添加:

#include <stdlib.h> 

此文件包含内置功能malloc声明。如果你不这样做,编译器会认为你要定义你自己的函数命名malloc和它警告你,因为:

  1. 你没有明确声明它
  2. 已经有一个内置-in函数的名称具有与隐式声明不同的签名(当函数被隐式声明时,其返回和参数类型被假定为int,这与内置的malloc不兼容,需要size_t并返回void*)。
+23

+1对于消息的实际描述 – 2009-08-07 11:28:30

+5

术语nit:C中没有内置函数这样的事情。malloc只是标准C库中的函数。 – Jens 2012-10-13 14:55:45

您还没有做过#include <stdlib.h>

您需要包括一个声明函数的头文件,例如:

#include <stdlib.h> 

如果不包括此头文件,该功能是不知道的编译器。所以它认为它是未声明的。

养成了在帮助中查看功能的习惯。

C的大部分帮助都是在unix手册页上建模的。

man malloc

给出了相当有用的结果。

googling man malloc会告诉你我的意思。

当然在unix中,你也可以得到apropos相关的东西。