¿Por qué recibo un aviso cada vez que puedo usar malloc?
Pregunta
Si yo uso malloc
en mi código:
int *x = malloc(sizeof(int));
Me sale este aviso de gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
Solución
Usted necesita agregar:
#include <stdlib.h>
Este archivo incluye la declaración de la función integrada malloc
.Si no lo hace, el compilador cree que usted desea para definir su propia función denominada malloc
y se advierte que debido a que:
- Usted no declaran explícitamente que y
- Ya hay una función incorporada por ese nombre que tiene una firma diferente a la que se ha declarado implícitamente (cuando una función se declara implícitamente, su regreso y tipos de argumento se supone que ser
int
, que no es compatible con el sistema integrado demalloc
, que tiene unsize_t
y devuelve unvoid*
).
Otros consejos
No has hecho #include <stdlib.h>
.
Debe incluir el archivo de encabezado que declara la función, por ejemplo:
#include <stdlib.h>
Si no incluye este archivo de encabezado, el compilador no conoce la función. Entonces lo ve como no declarado.
habitúese a buscar sus funciones en ayuda.
la mayoría de la ayuda para C está modelada en las páginas del manual de Unix.
man malloc
da resultados bastante útiles.
google man malloc te mostrará lo que quiero decir.
por supuesto, en Unix también obtienes propuestas para cosas relacionadas.