Perché ricevo un avviso ogni volta che utilizzo malloc?
Domanda
Se uso malloc
nel mio codice:
int *x = malloc(sizeof(int));
Ricevo questo avviso da gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
Soluzione
Devi aggiungere:
#include <stdlib.h>
Questo file include la dichiarazione per la funzione integrata malloc
. Se non lo fai, il compilatore pensa di voler definire la tua funzione denominata int
e ti avverte perché:
- Non lo dichiari esplicitamente e
- Esiste già una funzione incorporata con quel nome che ha una firma diversa da quella dichiarata implicitamente (quando una funzione viene dichiarata implicitamente, si presume che i suoi tipi di ritorno e argomento siano
size_t
, che non è ' t compatibile con ilvoid*
incorporato, che accetta un <=> e restituisce un <=>).
Altri suggerimenti
Non hai fatto #include <stdlib.h>
.
È necessario includere il file di intestazione che dichiara la funzione, ad esempio:
#include <stdlib.h>
Se non si include questo file di intestazione, la funzione non è nota al compilatore. Quindi lo vede come non dichiarato.
prendi l'abitudine di cercare le tue funzioni in aiuto.
gran parte dell'aiuto per C è modellato sulle pagine di manuale di unix.
man malloc
fornisce risultati piuttosto utili.
googling man malloc ti mostrerà cosa intendo.
ovviamente in unix ottieni anche a proposito di cose che sono correlate.