Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Harko en 20 de Junio de 2006, 12:53:29 PM

Título: Que diferencia hay?
Publicado por: Harko en 20 de Junio de 2006, 12:53:29 PM
Holaa

Llevo un tiempo trasteando con el Dev-c++ y, acostumbrado como estaba al borland, me he dado cuenta de que no me deja poner void main. Puede parecer una tonteria pero cuando te acostumbras a una cosa cuesta cambiar.

Lo que queria saber es porque el devc++ no admite void main y me obliga a ponerle int main con su correspondiente return. O esque soy yo el que no sabe como ponerlo bien? :?

A todo esto, el echo de poner void, int o lo que sea en el main afecta en algo al programa en general o es meramente estetico?

Harko.
Título: Que diferencia hay?
Publicado por: Pablo Zurita en 20 de Junio de 2006, 01:00:32 PM
Eso es porque el Standard ISO C++ no permite usar void main(). Es uno de los errores más comunes que los programadores descuidados tienen. El Standard ISO C++ requiere que main devuelva un int.
Título: Que diferencia hay?
Publicado por: Harko en 20 de Junio de 2006, 04:32:29 PM
Pues vaya rollo :(
Título: Que diferencia hay?
Publicado por: yens en 20 de Junio de 2006, 08:58:17 PM
yo siempre he pensado que el main iba:

int main(void) si no querias darle parametros de ejecucion al programa :S
Título: Que diferencia hay?
Publicado por: Pablo Zurita en 20 de Junio de 2006, 09:04:16 PM
Cita de: yEnSyo siempre he pensado que el main iba:

int main(void) si no querias darle parametros de ejecucion al programa :S
Aunque no se que tan recomendable es no capturar los parámetros, el Standard ISO C++ te permite usar int main(void).
Título: Que diferencia hay?
Publicado por: samsaga2 en 21 de Junio de 2006, 08:46:42 AM
Aqui comienzan las incompatibilidades entre el estandard ISO del C y del C++. En el del C si puedes hacer un void main() pero en el de C++ no.

http://homepages.tesco.net/J.deBoynePollard/FGA/legality-of-void-main.html
Título: Que diferencia hay?
Publicado por: TheWind en 23 de Junio de 2006, 07:37:28 PM
Mucho me temo q ese enlace es incorrecto, al menos parcialmente.

Actualmente hay dos estandares de C: ANSI-C (o C89) y ISO-C (o C99), esta última aun no es la predominante -y muchos esperamos q no lo sea jamás, ya que "guarrea" el lenguaje cosa fina-.

En ANSI-C, es OBLIGATORIO inicializar main como int main (int argc, char *argv[]), aunque se admite como parcialmente correcto el int main (void). En C99, ambas son correctas. Podeis comprobar esto c-faq.com
Título: Que diferencia hay?
Publicado por: Harko en 23 de Junio de 2006, 09:01:22 PM
Pues ya iva a preguntar que significaba el (int argc, char *arbv[]), que me tenia mosqueado eso de tener que escribirlo siempre.

Porque valen para algo, no? Y a que te refieres con lo de que es parcialmente correcto poner (void) en el C89?

De todas formas me sigue pareciendo muy engorroso el poner esas variables en los main. Al menos no me piden ponerlas en los examenes (aun), no se si me acordaria de esos nombrecitos :?

Harko.
Título: Que diferencia hay?
Publicado por: Ruben en 23 de Junio de 2006, 09:43:05 PM
Cita de: HarkoPues ya iva a preguntar que significaba el (int argc, char *arbv[]), que me tenia mosqueado eso de tener que escribirlo siempre.

Porque valen para algo, no?

int argc te indica el numero de parametros pasados en la estuctura char** argv.

A saber: son los posibles parametros que puedes pasarle a tu programa.

Ejem:

./ejemplo hola mundo

Le has pasado al programa "ejemplo" dos parametros: "hola" y "mundo". Luego dentro de tu programa los puedes recoger como:

char* nombrePrograma = argv[0];
char* parametro1 = argv[1];
char* parametro2 = argv[2];


La posicion 0 del array de cadenas esta reservado para el nombre de tu programa.

Un saludo,
Rubén.
Título: Que diferencia hay?
Publicado por: Harko en 23 de Junio de 2006, 10:17:53 PM
Mmm, interesante...
(http://www1.ocn.ne.jp/~kaworu/souho/t_gendou01.gif)

pues ahora si que le encuentro utilidad a eso, sip.

Harko.
PD:Que ganas tenia de conseguir una excusa para poner esa fotico XD
Título: Que diferencia hay?
Publicado por: MrK en 23 de Junio de 2006, 11:14:38 PM
Cita de: HarkoAl menos no me piden ponerlas en los examenes (aun), no se si me acordaria de esos nombrecitos :?
.

no necesitan tener esos nombres, puedes poner tranquilamente

int main (int numParametros, char **arrayParametros)
Título: Que diferencia hay?
Publicado por: zupervaca en 24 de Junio de 2006, 12:06:21 AM
Buenas harko si quieres adelantarte a toda tu clase e ir pillando el truco al c puedes pasarte por esta web, esta en español y explican las cosas de forma basica y sencilla y con ejemplos http://www.uib.es/c-calculo/cursc.htm , si quieres c++ pasate por esta otra http://mat21.etsii.upm.es/ayudainf/aprendainf/Cpp/manualcpp.pdf , las busque en el google por que veo que tienes algunas dudas basicas que podrias solucionar rapidamente con documentos de este tipo :wink:.