Malloc sin stdlib

Iniciado por fafafa01, 23 Junio 2016, 22:54 PM

0 Miembros y 1 Visitante están viendo este tema.

fafafa01

Buenas, he podido usar la función malloc sin especificar:

#include <stdlib.h>

¿alguien sabe a que se debe esto?

fary

#1
Que más cabeceras has añadido?
Un byte a la izquierda.

AlbertoBSD

#2
¿Que compilador estas usando?

Por ejemplo si estas usando gcc se pueden linkear librerias con -lmath etc..
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

fafafa01

las librerías que uso:

#include <stdio.h>
#include <math.h>


El compilador es tcc

class_OpenGL

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

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

MAFUS

Eso es magia...
o que el compilador incluye el archivo de cabecera por debajo porqué sabe que esto es un fallo común.

class_OpenGL

#6
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

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

AlbertoBSD

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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW