web-dev-qa-db-fra.com

Pourquoi ai-je un avertissement chaque fois que j'utilise malloc?

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’
108
Kredns

Vous devez ajouter:

#include <stdlib.h>

Ce fichier comprend 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 malloc et vous en avertit car:

  1. Vous ne le déclarez pas explicitement et
  2. Il existe déjà une fonction intégrée portant ce nom et dont la signature est différente de celle déclarée implicitement (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 le cas. t compatible avec le malloc intégré, qui prend un size_t et retourne un void*).
221
sepp2k

Tu n'as pas fait #include <stdlib.h>.

30
chaos

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é.

16
andri

prenez l'habitude de rechercher vos fonctions dans l'aide.

la plupart de l'aide pour C est calquée sur les pages de manuel unix.

homme malloc

donne des résultats assez utiles.

google homme malloc va vous montrer ce que je veux dire.

bien sûr, dans unix, vous obtenez également un propos pour les choses qui sont liées.

10
Tim Williscroft