Se eu usar malloc
em meu código:
int *x = malloc(sizeof(int));
Recebo este aviso de gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
Você precisa adicionar:
#include <stdlib.h>
Este arquivo inclui a declaração da função embutida malloc
. Se você não fizer isso, o compilador pensa que você deseja definir sua própria função chamada malloc
e avisa porque:
int
, o que não é compatível com o in malloc
, que recebe a size_t
e retorna a void*
).
Você não fez
#include <stdlib.h>
.fonte
Você precisa incluir o arquivo de cabeçalho que declara a função, por exemplo:
Se você não incluir este arquivo de cabeçalho, a função não será conhecida do compilador. Portanto, ele o vê como não declarado.
fonte
Crie o hábito de procurar suas funções no help.
A maior parte da ajuda para C é modelada nas páginas de manual do Unix.
Usando:
dá resultados bastante úteis.
Googling
man malloc
vai mostrar o que quero dizer.No Unix, você também obtém informações sobre coisas relacionadas.
fonte
#include <stdlib.h>
na sinopse significa que você deve escrever isso em seu programa.Além de outras respostas muito boas, eu gostaria de fazer um pequeno detalhamento e cobrir algo que ainda não foi discutido nas outras respostas.
Quando você está no Linux, para usar
malloc()
em seu código,Você realmente não precisa
#include <stdlib.h>
.(Embora o uso de
stdlib.h
seja muito comum e provavelmente todo programa que não seja de brinquedo deva incluí-lo de qualquer maneira, porque ele fornece uma ampla gama de funções e macros de biblioteca padrão C úteis)Você também pode
#include <malloc.h>
.Mas observe que o uso de
malloc.h
está obsoleto e torna seu código não portátil. Se você quiser usar,malloc()
deve sempre e sempre (exceto por razões explícitas para fazer o contrário)#include <stdlib.h>
.As razões por que , são melhor explicados nas respostas a esta pergunta:
diferença entre <stdlib.h> e <malloc.h>
fonte