Buenas, he podido usar la función malloc sin especificar:
#include <stdlib.h>
¿alguien sabe a que se debe esto?
Que más cabeceras has añadido?
¿Que compilador estas usando?
Por ejemplo si estas usando gcc se pueden linkear librerias con -lmath etc..
las librerías que uso:
#include <stdio.h>
#include <math.h>
El compilador es tcc
Es posible que el enlazador haya enlazado las funciones. El problema con no incluir la librería stdlib es que usas la función implícitamente, y eso es un problema porque el compilador no puede comprobar si los argumentos y el valor de retorno concuerdan. Mejor incluye stdlib y te evitas problemas
Eso es magia...
o que el compilador incluye el archivo de cabecera por debajo porqué sabe que esto es un fallo común.
Seguramente si le dice al compilador que le ponga las advertencias, le dirá que la función malloc se usa de forma implícita. Algo como esto:
main.c: In function 'main':
main.c:2:14: warning: implicit declaration of function 'malloc' [-Wimplicit-func
tion-declaration]
int *algo = malloc(sizeof(int));
^
main.c:2:14: warning: incompatible implicit declaration of built-in function 'ma
lloc'
main.c:2:14: note: include '<stdlib.h>' or provide a declaration of 'malloc'
main.c:2:7: warning: unused variable 'algo' [-Wunused-variable]
int *algo = malloc(sizeof(int));
Código usado:
int main() {
int *algo = malloc(sizeof(int));
return 0;
}
El programa ha compilado, sin tener que incluir la librería
Cita de: MAFUS en 24 Junio 2016, 12:18 PM
Eso es magia...
;-) ;-) Jajajaja
Hay veces que yo compilaba teniendo la funcion time:
Ya saben por aquello del random
srand(time(NULL));
Y sin incluir time.h Funciona.
Es cosa del compilador por que despues la probe en VC++ y si me pidio la libreria.
Saludos