Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/06/2012, 07:21
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: C: Dudas basicas - Apoyo Experto

Lo que yo aprendí es que, en C, no hay distinción entre funciones y procedimientos. Todo son funciones, unas devuelven un valor y otras no, pero todo son funciones.
Sobre lo de la función main, en rpincipio la "menos incorrecta" es la (b). El main clásico es

int main (int argc, char **argv)

en donde argc es el número de argumentos que se han pasado en la línea de comando y argv es un arreglo de punteros a caracter que apuntan a cada uno de esos argumentos. argc siempre valdrá, al menos, 1, y el primer argumento de la lista (apuntado por argv[0] siempre es el nombre del programa (el nombre con el que se ha invocado el ejecutable).

El valor que devuelve la función main es una indicación al sistema operativo de lo que ha ocurrido en el programa. Este valor debe tratarse desde el propio sistema operativo, por lo general se acepta que devolver un valor 0 corresponde a una terminación normal del programa, y cualquier valor distinto de 0 indica algún error o excepción. Estas comprobaciones suelen hacerse en archivos de proceso por lotes.

Posibles variantes:

Si no pones el tipo de retorno de main, es decir, utilizas main(), el compilador te va a considerar que devuelve un int. Cuando una función la declaras sin tipo a devolver, por defecto el compilador te va a considerar que devuelve un int.

Si main la declaras como tipo void, es que no tienes intención de utilizar ese posible valor de retorno.

Si pones void en la lista de parámetros, es que no vas a utilizar la lista de argumentos.

De todos modos, como norma general, siempre pon el tipo que devuelve la función (void si no vas a devolver nada), y utiliza void en la lista de parámetros si no vas a pasar parámetros.

Ante la duda, yo consideraría correctas:

int main (int argc, char **argv)
int main (void)
void main (void)

Sobre lo que dices de que en Dev-c++, void main() no funciona y reclama un int... Bien, el que no funcione puede ser debido a la falta de argumentos en main, pon void si no los va a haber y vuelve a probar, lo de que te reclame que debe retornar un int ya no lo sé, aunque puede ser consecuencia de lo anterior. Ten en cuenta que, al compilar, cuando se encuentra un error, el compilador intenta seguir adelante, por lo que detectará errores como consecuencia del primero y que desaparecerán una vez corregido este.

Bueno, espero qyue este rollo te aclare algo en lugar de liarte más.

Saludos,