Ich erhalte diesen Fehler:
Warnung: Inkompatible implizite Deklaration der eingebauten Funktion 'malloc'
Ich versuche das zu tun:
fileinfo_list* tempList = malloc(sizeof(fileinfo_list));
Nur als Referenz wird folgende Struktur verwendet:
typedef struct {
fileinfo** filedata;
size_t nFiles;
size_t size;
size_t fileblock;
} fileinfo_list;
Ich sehe nichts falsch an dem, was ich getan habe. Ich erstelle gerade eine tempList
mit der Größe von 1 x fileinfo_list
.
Antworten:
Sie haben wahrscheinlich vergessen, aufzunehmen
<stdlib.h>
.quelle
<stdlib.h>
dem Einfügen der Warnung wurde durch einen Fehler ersetzterror: conflicting types for 'malloc'
Du musst
#include <stdlib.h>
. Andernfalls wird definiert,int malloc()
welche mit dem integrierten Typ nicht kompatibel istvoid *malloc(size_t)
.quelle
int malloc()
, repliziert esvoid *malloc(size_t)
?int
Werten kotzt Ziegenkot, während ein x86-32 -Bit -Datenzeiger / 32-Bit -Zeigerint
scheinbar korrekt funktioniert. Beides ist nicht korrekt, da der Compiler in keinem Fall weiß, wasmalloc
tatsächlich zurückgegeben wird, undint
als Antwort davon ausgeht .Du vermisst
#include <stdlib.h>
.quelle
Die Datei stdlib.h enthält die Header-Informationen oder den Prototyp der Funktionen malloc, calloc, realloc und free.
Um diese Warnung in ANSI C zu vermeiden, sollten Sie die stdlib-Headerdatei einschließen.
quelle
Die einzige Lösung für solche Warnungen besteht darin, stdlib.h in das Programm aufzunehmen.
quelle