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

Kre*_*dns 108 c malloc gcc warnings sizeof

如果我malloc在我的代码中使用:

int *x = malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我收到以下警告gcc:

new.c:7: warning: implicit declaration of function ‘malloc’  
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 222

你需要添加:

#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)

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

  1. 你不明确声明它
  2. 已经存在一个由该名称构成的内置函数,该函数具有与隐式声明的函数不同的签名(当隐式声明函数时,其假定的返回和参数类型与构建函数int不兼容) in malloc,取a size_t并返回a void*).

  • @ sepp2k嗯,我*做*看到一个问题.用法是非标准的.*编译器*可以有内置函数,gcc可以内置malloc.但正如我在C*中写的那样,*没有内置函数. (6认同)
  • 术语nit:C中没有内置函数这样的东西.malloc只是标准C库中的一个函数. (5认同)
  • @Jens我没有看到将标准库函数称为内置函数的问题 - 由于错误消息使用"内置"一词,gcc人员也没有看到(这就是为什么我这样做). (4认同)

cha*_*aos 30

你还没有做#include <stdlib.h>.


and*_*dri 16

您需要包含声明该函数的头文件,例如:

#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)

如果不包含此头文件,则编译器不知道该函数.所以它认为它是未宣布的.


Tim*_*oft 10

养成在帮助中查找功能的习惯.

C的大多数帮助都是在unix手册页上建模的.

男人malloc

给出非常有用的结果.

谷歌搜索manoc将告诉你我的意思.

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