Por que recebo um aviso cada vez que eu uso malloc?
Pergunta
Se eu usar malloc
no meu código:
int *x = malloc(sizeof(int));
Eu 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’
Solução
Você precisa adicionar:
#include <stdlib.h>
Este arquivo inclui a declaração para a malloc
função built-in. Se você não fizer isso, o compilador acha que você deseja definir sua própria função chamada malloc
e avisa porque:
- Você não declará-la e explicitamente
- Já existe uma função built-in por esse nome que tem uma assinatura diferente do que aquele que foi declarado implicitamente (quando uma função é declarada implicitamente, seus tipos de retorno e argumentos estão a ser assumida
int
, o que não é compatível com o built-inmalloc
, que leva umsize_t
e retorna umvoid*
).
Outras dicas
Você não fez #include <stdlib.h>
.
Você precisa incluir o arquivo de cabeçalho que declara a função, por exemplo:
#include <stdlib.h>
Se você não incluir esse arquivo de cabeçalho, a função não é conhecido para o compilador. Por isso, vê-lo como não declarado.
fazer um hábito de olhar as suas funções em ajuda.
mais ajuda para C é modelado sobre as páginas de manual Unix.
homem malloc
dá resultados bastante úteis.
pesquisando homem malloc irá mostrar-lhe o que quero dizer.
É claro que em unix você começa também a propósito de coisas que estão relacionadas.