2009-08-04 14 views

Répondre

203

Vous devez ajouter:

#include <stdlib.h> 

Ce fichier comprend la déclaration pour la fonction intégrée malloc. Si vous ne le faites pas, le compilateur pense que vous voulez définir votre propre fonction nommée malloc et vous avertit que:

  1. Vous ne déclarez pas explicitement et
  2. Il est déjà construit -en fonction de ce nom qui a une signature différente de celle qui a été implicitement déclarée (lorsqu'une fonction est déclarée implicitement, ses types de retour et d'argument sont supposés être int, ce qui n'est pas compatible avec le malloc intégré, qui prend un size_t et renvoie un void*).
+23

+1 pour une description réelle du message –

+5

Terminologie nit: Il n'y a pas de fonction intégrée dans C. malloc est simplement une fonction de la bibliothèque C standard. – Jens

+4

@Jens Je ne vois pas de problème à faire référence à des fonctions de bibliothèque standard comme built-ins - et les gens gcc ne semblent pas non plus puisque le message d'erreur utilise le mot "built-in" aussi (c'est pourquoi). – sepp2k

28

Vous n'avez pas effectué #include <stdlib.h>.

15

Vous devez inclure le fichier d'en-tête qui déclare la fonction, par exemple:

#include <stdlib.h> 

Si vous ne pas inclure ce fichier d'en-tête, la fonction est connue par le compilateur. Donc, il le voit comme non déclaré.

10

Prenez l'habitude de regarder vos fonctions en aide.

Le plus d'aide pour C est modélisée sur les pages de manuel unix.

homme malloc

donne des résultats très utiles. Googling man malloc vous montrera ce que je veux dire.

bien sûr en unix vous obtenez également des propositions pour les choses qui sont liées.

+1

Seulement si vous savez déjà que la ligne '#include ' dans le synopsis signifie que vous devez écrire cela dans votre programme. –

+1

Si quelqu'un a lu les autres réponses ici, il le saura maintenant. – MikeKulls