2009-08-04 4 views

Antwort

203

Sie müssen hinzufügen:

#include <stdlib.h> 

Diese Datei für die eingebaute Funktion malloc die Deklaration enthält. Wenn Sie das nicht tun, denkt der Compiler Sie Ihre eigene Funktion malloc Namen definieren möchten, und es warnt Sie, weil:

  1. Sie nicht explizit erklären und
  2. Es ist bereits eine integrierte -in 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 int sind, was nicht mit dem eingebauten malloc kompatibel ist nimmt eine size_t und gibt eine void*).
+23

+1 für eine tatsächliche Beschreibung der Nachricht –

+5

Terminologie nit: Es gibt keine eingebaute Funktion in C. malloc ist einfach eine Funktion aus der Standard C-Bibliothek. – Jens

+4

@Jens Ich sehe kein Problem mit der Bezugnahme auf Standard-Bibliotheksfunktionen als eingebaute - und auch nicht die gcc Menschen anscheinend seit der Fehlermeldung verwendet das Wort "Built-in" auch (weshalb ich es tat). – sepp2k

28

Sie haben nicht #include <stdlib.h> getan.

15

Sie müssen die Header-Datei enthalten, die die Funktion, zum Beispiel erklärt:

#include <stdlib.h> 

Wenn Sie diese Header-Datei nicht enthalten, wird die Funktion mit dem Compiler nicht bekannt. Es sieht es also als unangemeldet an.

10

machen Sie es sich zur Gewohnheit, Ihre Funktionen in Hilfe zu suchen.

Die meisten Hilfe für C ist den Unix-Handbuchseiten nachempfunden.

man malloc

gibt ziemlich nützliche Ergebnisse.

Googling Mann Malloc wird Ihnen zeigen, was ich meine.

natürlich in Unix erhalten Sie auch apropos für Dinge, die verwandt sind.

+1

Nur wenn Sie bereits wissen, dass die Zeile '#include ' in der Zusammenfassung bedeutet, dass Sie das in Ihrem Programm schreiben müssen. –

+1

Wenn jemand die anderen Antworten hier gelesen hat, dann werden sie das jetzt wissen. – MikeKulls