Pourquoi ai-je un avertissement chaque fois que j'utilise malloc?
Question
Si j'utilise malloc
dans mon code:
int *x = malloc(sizeof(int));
Je reçois cet avertissement de gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
La solution
Vous devez ajouter:
#include <stdlib.h>
Ce fichier inclut la déclaration de la fonction intégrée malloc
. Si vous ne le faites pas, le compilateur pense que vous souhaitez définir votre propre fonction nommée int
et vous en avertit car:
- Vous ne le déclarez pas explicitement et
- Ce nom contient déjà une fonction intégrée dont la signature est différente de celle qui a été déclarée implicitement (quand une fonction est déclarée implicitement, ses types de retour et d'argument sont supposés être
size_t
, ce qui is ' t compatible avec levoid*
intégré, qui prend un <=> et renvoie un <=>).
Autres conseils
Vous n'avez pas encore terminé #include <stdlib.h>
.
Vous devez inclure le fichier d'en-tête qui déclare la fonction, par exemple:
#include <stdlib.h>
Si vous n'incluez pas ce fichier d'en-tête, la fonction n'est pas connue du compilateur. Donc, il le voit comme non déclaré.
prenez l'habitude de rechercher vos fonctions dans l'aide.
la plupart de l'aide pour C est modelée sur les pages de manuel unix.
homme malloc
donne des résultats très utiles.
google homme malloc va vous montrer ce que je veux dire.
bien sûr, sous Unix, vous obtenez également un propos pour les choses qui sont liées.