Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


7.5. El valor de retorno "void". El valor de retorno de "main"

Cuando queremos dejar claro que una función no tiene que devolver ningún valor, podemos hacerlo indicando al principio que el tipo de datos va a ser "void" (nulo). Por ejemplo, nuestra función "saludar", que se limitaba a escribir varios textos en pantalla, quedaría más correcta si fuera así:

void saludar() {
  printf("Bienvenido al programa\n");
  printf(" de ejemplo\n");
  printf("Bienvenido al programa\n");
}

Muchos compiladores antiguos (previos al estándar C99) permiten que una función se indique sin tipo devuelto, como hicimos en el primer ejemplo, y en ese caso, el lenguaje C no supondrá que no vaya a devolver ningún valor, sino que devolverá un valor entero (int):

main() {
  ...
}

A partir del estándar C99, es obligatorio indicar el tipo devuelto, así que deberemos usar explícitamente "void", si la función no va a devolver ningún dato. Por eso, la forma habitual de declarar el cuerpo de un programa es:

int main() {
  ...
}

Eso quiere decir que "main" también devuelve un valor, que se leerá desde fuera de nuestro programa. Lo habitual es devolver 0 si todo ha funcionado correctamente

int main() {
  ...
  return 0;
}

Y devolveríamos otro valor si hubiera habido algún problema durante el funcionamiento de nuestro programa (por ejemplo, si no hemos podido abrir algún fichero):

int main() {
  FILE* fichero;
  fichero = fopen("nombre.txt", "rt");
  if (fichero == NULL) return 1;
  ...
  return 0;
}

Este valor se podría comprobar desde el sistema operativo. Por ejemplo, en MsDos y Windows se lee con "IF ERRORLEVEL", así:

IF ERRORLEVEL 1 ECHO Ha habido un error en el programa

Nota 1: En la mayoría de compiladores, el cuerpo del programa ("main") debe ser devolver un entero (int). Algunos compiladores permiten declarar "main" como "void", pero la mayoría no lo consideran aceptable.

Nota 2: En algunos lenguajes de programación se llama "procedimientos" (en inglés "procedure") o "subrutinas" a las funciones que no devuelven ningún valor, y se reserva el nombre "función" para las que sí dan un resultado.

Ejercicios propuestos:

####
####