La función main()

El prototipo de la función main() que usamos en la asignatura es:

int main();

Vemos que la función principal main() tiene tipo int. Sin embargo, en la mayoría de los ejemplos no usamos return para devolver un entero.

  • En C++ y sólo para la función main(), si no aparece la sentencia return, el compilador añade implícitamente return 0; al final.

  • En el resto de funciones que devuelven un tipo, olvidar el return causará un comportamiento indefinido en el programa.

Utilidad del return de la función main()

Debemos tener en cuenta que, lo mismo que una función puede invocar a otra, un programa puede ser llamado desde otro. De hecho, es lo que hacemos desde un entorno de desarrollo como Code::Blocks invocando al compilador C++.

En ocasiones, el programa que invoca al otro necesita saber si todo ha ido bien o si, por el contrario, ha ocurrido un problema. Así, vía el valor entero del return podemos establecer unos códigos que informen al programa invocante.

  • Usando return 0; se asume por convención que el programa ha terminado con éxito.

  • return EXIT_SUCCESS; o return EXIT_FAILURE; son otras formas de informar de terminación sin/con errores.

Las constantes EXIT_SUCCESS y EXIT_FAILURE están definidas en la biblioteca cstdlib.

Argumentos de la línea de comandos

La función main() también admite el prototipo:

int main(int ac, char** av);

De esta forma, desde una terminal, podemos invocar a un programa suministrándole unos argumentos de entrada.

No estudiaremos esta alternativa en este curso.

Nota

C++ permite la sobrecarga de funciones, caracterizadas por compartir el identificador, pero con diferentes listas de argumentos.