Programación General > C/C++
Pruebas en C
jvmjunior:
Me salen los siguientes errores en la compilación:
junior@JuNioR-Linux:~/Escritorio/Calidad$ gcc -g memoria.c -o memoria
memoria.c: En la función ‘valor_monticulo’:
memoria.c:13: aviso: la asignación crea un puntero desde un entero sin una conversión
memoria.c:15: aviso: declaración implícita incompatible de la función interna ‘free’
memoria.c: En la función ‘main’:
memoria.c:21: aviso: el formato ‘%p’ espera el tipo ‘void *’, pero el argumento 2 es de tipo ‘int’
memoria.c:22: aviso: el formato ‘%p’ espera el tipo ‘void *’, pero el argumento 2 es de tipo ‘int’
junior@JuNioR-Linux:~/Escritorio/Calidad$ gcc -g memoria.c -o memoria
memoria.c: En la función ‘valor_monticulo’:
memoria.c:12: aviso: declaración implícita incompatible de la función interna ‘malloc’
memoria.c:14: aviso: declaración implícita incompatible de la función interna ‘free’
memoria.c: En la función ‘main’:
memoria.c:20: aviso: el formato ‘%p’ espera el tipo ‘void *’, pero el argumento 2 es de tipo ‘int’
memoria.c:21: aviso: el formato ‘%p’ espera el tipo ‘void *’, pero el argumento 2 es de tipo ‘int’
Al código q me mandaste solo le he aumentado esta linea: #include <stdio.h> .
Que podrá ser, no??
Gracias por tu atención.
Saludos.
m0skit0:
No son errores, son avisos... :P
¿Seguro que lo has copiado tal cual...? A mí no me da todos esos avisos.
Además, algo cambiaste, puesto que los errores que te da la primera vez, no son los de la segunda. De todas formas, te lo ha compilado, pero no lo has probado.
jvmjunior:
Acabo de agregarle una libreria... #include <stdlib.h>... el coódigo esta de la siguiente manera:
#include <stdio.h>
#include <stdlib.h>
int valor_pila()
{
__asm__("push %espnt"
"pop %eax");
}
int valor_monticulo()
{
int *p, valor;
p = malloc(sizeof(int));
valor = (int) p;
free(p);
return valor;
}
int main(int argc, char *argv[])
{
printf("Valor de la pila: %pn", valor_pila());
printf("Valor del monticulo: %pn", valor_monticulo());
system("PAUSE");
return 0;
}
Luego de compilarlo, ya solo me salen los siguientes errores ó mensajes:
junior@JuNioR-Linux:~/Escritorio/Calidad$ gcc -g memoria.c -o memoria
memoria.c: En la función ‘main’:
memoria.c:21: aviso: el formato ‘%p’ espera el tipo ‘void *’, pero el argumento 2 es de tipo ‘int’
memoria.c:22: aviso: el formato ‘%p’ espera el tipo ‘void *’, pero el argumento 2 es de tipo ‘int’
Saludos.
m0skit0:
Aer, te lo corrijo, aunque deberías saber cómo corregirlo tú mismo, es muy sencillo. Yo es que estoy usando MinGW (un porte de gcc para Windows) en Win2000.
--- Código: C ---int valor_pila(){ __asm__("push %espnt" "pop %eax");} int valor_monticulo(){ int *p, valor; (void *)p = malloc(sizeof(int)); valor = (int) p; free((void *)p); return valor;} int main(int argc, char *argv[]){ printf("Valor de la pila: %pn", (void *)valor_pila()); printf("Valor del monticulo: %pn", (void *)valor_monticulo()); return 0;}
De todas formas, te funciona bien, y no te falta ninguna librería porque si no no te compilaría, nene. Puedes ver que la dirección de la pila y el montículo cambia, cosa que no ocurre en mi Win 2K donde siempre son la misma. Sólo espero que hayas entendido el código, porque si te preguntan sobre ello... :blink: :ph34r:
jvmjunior:
Acaba de compilar sin ningun problema con una pequeñisima modificación.....adjunto la solución definitiva..
El programita hace lo que necesito, pero no lo entiendo el código , asi que me pondré a descifrarlo por que tengo que explicarle a mi profe como lo hice.
Te estoy infinitamente agradecido, muchisimas gracias por tu atención y tu paciencia!....ojalá hubieran mas personas como vos, el mundo sería mejor!!
Saludos. :hola: :good: :comp: :hitcomp:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa