Otrzymuję ten błąd:
ostrzeżenie: niekompatybilna niejawna deklaracja funkcji wbudowanej „malloc”
Próbuję to zrobić:
fileinfo_list* tempList = malloc(sizeof(fileinfo_list));
Dla porównania, struktura używana pod ręką to:
typedef struct {
fileinfo** filedata;
size_t nFiles;
size_t size;
size_t fileblock;
} fileinfo_list;
Nie widzę nic złego w tym, co zrobiłem. Po prostu tworzę a tempList
o rozmiarze 1 x fileinfo_list
.
Odpowiedzi:
Prawdopodobnie zapomniałeś uwzględnić
<stdlib.h>
.źródło
<stdlib.h>
ostrzeżenia został zastąpiony przez błąderror: conflicting types for 'malloc'
Musisz
#include <stdlib.h>
. W przeciwnym razie jest zdefiniowany jakoint malloc()
niezgodny z typem wbudowanymvoid *malloc(size_t)
.źródło
int malloc()
, czy powiela sięvoid *malloc(size_t)
?int
wartościami będzie wymiotować kozimi odchodami, podczas gdy 32-bitowy wskaźnik danych x86 / 32-bitowyint
może pozornie działać poprawnie. Żadne z nich nie są poprawne, ponieważ w żadnym przypadku kompilator nie jest świadomy tego, comalloc
faktycznie zwraca, i zakładaint
w odpowiedzi.Tęsknisz
#include <stdlib.h>
.źródło
Plik stdlib.h zawiera informacje nagłówka lub prototyp funkcji malloc, calloc, realloc i free.
Aby uniknąć tego ostrzeżenia w ANSI C, należy dołączyć plik nagłówkowy stdlib.
źródło
Jedynym rozwiązaniem takich ostrzeżeń jest dołączenie stdlib.h do programu.
źródło