Estou recebendo este erro:
aviso: declaração implícita incompatível da função incorporada 'malloc'
Estou tentando fazer isso:
fileinfo_list* tempList = malloc(sizeof(fileinfo_list));
Apenas para referência, a estrutura usada é:
typedef struct {
fileinfo** filedata;
size_t nFiles;
size_t size;
size_t fileblock;
} fileinfo_list;
Não vejo nada de errado com o que fiz. Estou apenas criando um tempList
com o tamanho de 1 x fileinfo_list
.
Respostas:
Você provavelmente esqueceu de incluir
<stdlib.h>
.fonte
<stdlib.h>
o aviso foi substituído por um erroerror: conflicting types for 'malloc'
Você precisa
#include <stdlib.h>
. Caso contrário, é definido comoint malloc()
incompatível com o tipo internovoid *malloc(size_t)
.fonte
int malloc()
, ele se replicavoid *malloc(size_t)
?int
valores de 32 bits vomitará fezes de cabra, enquanto um x86 de 32 bits-ponteiro de dados / 32 bits-int
pode aparentemente funcionar corretamente. Nenhum dos dois está correto, pois em nenhum dos casos o compilador está ciente do quemalloc
realmente retorna e assumeint
em resposta.Você está desaparecido
#include <stdlib.h>
.fonte
O arquivo stdlib.h contém as informações de cabeçalho ou protótipo das funções malloc, calloc, realloc e free.
Portanto, para evitar esse aviso no ANSI C, você deve incluir o arquivo de cabeçalho stdlib.
fonte
A única solução para esses avisos é incluir stdlib.h no programa.
fonte