In xcode 5 erhalte ich diese Warnung:
“implizite Deklaration der Funktion free ist in c99 ungültig”
Wie soll ich meine C-Strukturen freigeben, wenn ich die Funktion free() nicht verwenden kann?
In xcode 5 erhalte ich diese Warnung:
“implizite Deklaration der Funktion free ist in c99 ungültig”
Wie soll ich meine C-Strukturen freigeben, wenn ich die Funktion free() nicht verwenden kann?
Sie sollten enthalten <stdlib.h>
.
Das ist eine schreckliche Antwort, wenn ich das sagen darf…
– Irgendein Programmierer-Typ
13. April um 19:53 Uhr
Sie erhalten diese Warnung, weil Sie eine Funktion aufrufen, ohne sie vorher zu deklarieren, sodass der Compiler nichts über die Funktion weiß.
Alle Funktionen müssen vor dem Aufruf deklariert werden, es gibt keine “eingebauten” Funktionen in C.
Es ist wahr, dass free()
eine im Standard definierte Funktion ist, aber immer noch nicht eingebaut ist, müssen Sie einen Prototyp dafür haben.
Um herauszufinden, welcher Header den Prototyp enthält, suchen Sie nach “man free” und suchen Sie nach a Linux Handbuchseite. Ganz oben steht:
#include <stdlib.h>
void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);
Dies sagt Ihnen, dass Sie Folgendes hinzufügen sollten, um die aufgelisteten Funktionen zu verwenden:
#include <stdlib.h>
zu deinem Quellcode.
Hast du aufgenommen
<stdlib.h>
?– Michael
16. Oktober 2013 um 11:01 Uhr
Haben Sie den Speicher für die Struktur mit malloc- oder calloc-Funktionen deklariert?
– fragmisch
16. Oktober 2013 um 11:30 Uhr
@Michael: Ich habe den gleichen Fehler und versucht aufzunehmen
<stdlib.h>
aber der Fehler verschwindet nicht– Lee
25. Februar 2017 um 9:21 Uhr