dev-c++ ----> ¿void?

Iniciado por lalocr, 16 Abril 2011, 06:05 AM

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

lalocr

hola amigos soy nuevo en elhacker.net, estoy aprendiendo a programar. soy principiante. estoy compilando con dev-c++. Mi problema es este:
cuando escribo cualquier programa y en el main le pongo void antes me manda un error y me dice esto: `main' must return `int' .
yo entiendo que el void es para decirle al complador que el main no va a regresar ningun valor; por lo tanto no tengo que retornar ningun  valor al final, osea no tengo que poner return 0; ¿porque pasa esto? si le pongo void main () es porque ya no tengo que poner return 0. Aun asi ya lo probe poniendo void main () y al final un return 0 y ni aun asi, de todas maneras me manda el error. no lo compila. A fuerzas casi casi me obliga a ponerme el int main o el main nada mas , hasta que hago eso ya me lo comnpila el programa.  ¿que pasa? ayudenme!!! porfavor!! :O agradezco infinitamente al que me responda bien! :) o sera que se me esta olvidando poner algo para que tome en cuenta el void?...

BlackZeroX

#1
.
Prueba asi, en los compiladores no tan rucos o viejos ya se debe hacer con int el void ya no se usa en el main...:

Código (cpp) [Seleccionar]


int main() {
    // Tu codigo Aqui.
    return 0;
}



Te dejo esta liga ( esta todo en español ):

http://c.conclase.com/

Temibles Lunas!¡.
.
The Dark Shadow is my passion.

Karman

se debe a modificaciones del standart, en un principio C soportaba el "void main" pero actualmente (luego de muchos años) ya no es soportado y la mayoría de los compiladores te tirara ese warning o error directamente, la solución ya te la contestaron.

S2

Garfield07

Void significa "Nada". Si luego usas algún return te dará error. Es siempre recomendable usar int.


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Firos

#4
Exactamente.

Si lo usas con void
void main() {
tu programa
}


Como puedes ver, no tienes que poner return 0; porque si lo pones te dirá eso del error, que no debe devolver un entero.

Void quiere decir que no devuelve nada.


Yo, como dicen arriba, te recomiendo usarlo asi:
int main(){
tu programa

return 0;
}


INT en este caso esta diciendole que "main" tiene que devolver un entero.

Devolvera 0 (entero) cuando todo salga bien. Si entre medias pones alguna funcion para detectar errores puedes ponerle "return 1" (donde uno puede ser lo que quieras, hasta una variable que contenta un entero) para identificar el error.

Imaginate que usas un programa para meter datos por teclado. Un dni, por ejemplo.

El programa te pide el nombre, apellidos, y año. Si en el nombre le metes un numero el programa lo detecta y devuelve un error haciendo que el programa retroceda o, por ejemplo, detener la ejecucion del programa y que devuelva un 1. El programa padre que es el que ha mandado ejecutar esta funcion o programa ve un 1 y, por ejemplo, con un switch() en el caso de que sea 1 que haga una cosa, por ejemplo que printee "El nombre no puede contener numeros". Luego, para los apellidos haces un codigo igual, solo que en vez de devolver 1 que devuelva 2 y el programa padre detectara el 2 y diras dentro del switch() en el caso de que sea 2 que printee "error al introducir los apellidos", y asi con todo.

Si usas un programa con funciones, o para llamar a otros archivos viene muy bien para ordenar tu codigo y saber en que parte esta fallando el programa.


En muchos codigos veras que cuando vas a usar alguna funcion que es vitable para que el resto del programa funcione lo ponen asi:


#include <stdio.h>

int funcion(void);

int main(){

if(funcion()!=0){
printf("Error al hacer algo en funcion()");
}
// Este else hace referencia a lo que sea distinto de arriba, es decir a lo que
// sea igual a cero, que en este caso es lo correcto :)
else {
printf("TODO ha salido correctamente, podemos seguir");
}
}

int funcion(void){
// tu funcion y tus condicionantes, si en un sitio detectas un error por ejemplo al
// introducir un nombre le pones "return 1" y saldra de la funcion sin terminarla.

// al final de la funcion pones return 0 para indicar que todo ha salido correctamente
return 0;
}


Te comento un poco, este programa usa funciones para que sean llamadas desde el programa principal "main". Eso que ves abajo y arriba es una funcion. Lo de arriba es un prototipo que tiene que ponerse si quieres poder usar la funcion en cualquier parte del programa. Al final del programa declaras la funcion, es decir, es como si lo escribieses en el programa principal main y lo llamas desde ahi.

Si te fijas en el main le hemos puesto un condicionante, "Si funcion() es distinto de 0 es que ha habido un error en la ejecucion de la funcion".

Si te fijas, la funcion del prototipo se declara igual que la funcion de abajo. Y tiene void dentro del parentesis, eso quiere decir que no se le pasa ningun parametro, ninguna variable.

Echale un vistazo a las funciones a a pasarles tipos de datos.

Ya tienes algo más por donde empezar ;)


Un saludo.
El final del camino no está determinado, lo determinamos nosotros mismos paso a paso, día a día, y se puede cambiar.

Firos

#5
Con respecto a los IDEs. Te voy a recomendar definitivamente el Codelite xD

No es por ser pesado. Lo único es que acabo de ver la última actualizacion del Codelite y es del día 13 de este mes.

Creo recordar que codeblocks esta parado desde hace algun tiempo.

Por otra parte, puedes entrar en este enlace y ver las distintas versiones que tienen.

Windows:
- Una sin el compilador MinGW.
- Otra con el MinGW.
- Y otra con el wxWidgets incorporado para programar programas graficos.

Linux: Para linux tienes el programa (ya tienes compiladores en Linux) y otra opcion para instalarle el wxWidgets. También puedes hacerlo compilando el source del programa.

http://www.codelite.org/LiteEditor/Download


Un saludo.
El final del camino no está determinado, lo determinamos nosotros mismos paso a paso, día a día, y se puede cambiar.

RyogiShiki

Cita de: Firos en 17 Abril 2011, 16:43 PM
Creo recordar que codeblocks esta parado desde hace algun tiempo.

Bueno si vas a la página oficial seguramente no encontrarás mucho, pero si buscas por las Nightly Builds Encontrarás un IDE bastante actualizado (a 2 de abril).

Saludos 


<<<-Basura->>>

Bueno ya que lo mencionas, mi pregunta es para que se usa el return 0, en el main a que funcion le pasa el valor, porque no siempre main retornara 0, puede retornar cualquier otro valor entonces mi duda seria; un ejemplo donde se use el return de main para realisar alguna accion
<<<--Basura-->>>