Diese Datei enthält die Deklaration für die integrierte Funktion malloc. Wenn Sie dies nicht tun, glaubt der Compiler, dass Sie Ihre eigene Funktion mit dem Namen definieren möchten, mallocund warnt Sie, weil:
Sie deklarieren es nicht explizit und
Es gibt bereits eine integrierte Funktion mit diesem Namen, die eine andere Signatur als die implizit deklarierte hat (wenn eine Funktion implizit deklariert wird, wird angenommen, dass ihre Rückgabe- und Argumenttypen intnicht mit der integrierten Funktion kompatibel sind. in malloc, das a nimmt size_tund a void*) zurückgibt .
Terminologie nit: In C. malloc gibt es keine integrierte Funktion, sondern lediglich eine Funktion aus der Standard C-Bibliothek.
Jens
5
@Jens Ich sehe kein Problem darin, Standardbibliotheksfunktionen als integrierte Funktionen zu bezeichnen - und die gcc-Leute anscheinend auch nicht, da in der Fehlermeldung auch das Wort "integriert" verwendet wurde (weshalb ich es getan habe).
sepp2k
7
@ sepp2k Nun, ich tue ein Problem sehen. Die Verwendung ist nicht Standard. Compiler können integrierte Funktionen haben, und in gcc ist möglicherweise malloc integriert. Aber wie ich geschrieben habe, gibt es in C keine eingebauten Funktionen.
Nur wenn Sie bereits wissen, dass die Zeile #include <stdlib.h>in der Inhaltsangabe bedeutet, dass Sie diese in Ihr Programm schreiben müssen.
Mechanische Schnecke
1
Wenn jemand die anderen Antworten hier gelesen hat, weiß er das jetzt.
MikeKulls
0
Neben den anderen sehr guten Antworten möchte ich einen kleinen Trottel machen und etwas behandeln, was in den anderen Antworten noch nicht besprochen wurde.
Wenn Sie unter Linux sind, um malloc()in Ihrem Code zu verwenden,
Das musst du eigentlich nicht#include <stdlib.h> .
(Obwohl die Verwendung von stdlib.hsehr verbreitet ist und wahrscheinlich jedes Nicht-Spielzeug-Programm es so oder so enthalten sollte, da es eine breite Palette nützlicher C-Standard-Bibliotheksfunktionen und Makros bietet)
Sie könnten auch #include <malloc.h>stattdessen.
Beachten Sie jedoch, dass die Verwendung von malloc.hveraltet ist und Ihr Code nicht portierbar ist. Wenn Sie verwenden möchten, malloc()sollten Sie immer und immer (außer aus expliziten Gründen, um etwas anderes zu tun) #include <stdlib.h>.
Die Gründe dafür werden am besten in den Antworten auf diese Frage erklärt:
Du hast es nicht getan
#include <stdlib.h>
.quelle
Sie müssen die Header-Datei einschließen, die die Funktion deklariert, zum Beispiel:
Wenn Sie diese Header-Datei nicht einschließen, ist die Funktion dem Compiler nicht bekannt. Es sieht es also als nicht deklariert an.
quelle
Machen Sie es sich zur Gewohnheit, Ihre Funktionen in der Hilfe nachzuschlagen.
Die meiste Hilfe für C ist den Unix-Handbuchseiten nachempfunden.
Verwenden von:
gibt ziemlich nützliche Ergebnisse.
Googeln
man malloc
wird dir zeigen, was ich meine.Unter Unix erhalten Sie auch Vorschläge für verwandte Dinge.
quelle
#include <stdlib.h>
in der Inhaltsangabe bedeutet, dass Sie diese in Ihr Programm schreiben müssen.Neben den anderen sehr guten Antworten möchte ich einen kleinen Trottel machen und etwas behandeln, was in den anderen Antworten noch nicht besprochen wurde.
Wenn Sie unter Linux sind, um
malloc()
in Ihrem Code zu verwenden,Das musst du eigentlich nicht
#include <stdlib.h>
.(Obwohl die Verwendung von
stdlib.h
sehr verbreitet ist und wahrscheinlich jedes Nicht-Spielzeug-Programm es so oder so enthalten sollte, da es eine breite Palette nützlicher C-Standard-Bibliotheksfunktionen und Makros bietet)Sie könnten auch
#include <malloc.h>
stattdessen.Beachten Sie jedoch, dass die Verwendung von
malloc.h
veraltet ist und Ihr Code nicht portierbar ist. Wenn Sie verwenden möchten,malloc()
sollten Sie immer und immer (außer aus expliziten Gründen, um etwas anderes zu tun)#include <stdlib.h>
.Die Gründe dafür werden am besten in den Antworten auf diese Frage erklärt:
Unterschied zwischen <stdlib.h> und <malloc.h>
quelle