¿Por qué tenemos que usar `int main` y no` void main` en C ++?

¿Por qué necesitamos usar int main y no void main en C ++?

La respuesta corta es porque el estándar de C ++ requiere que main() devuelva int .

Como probablemente sepa, el valor de retorno de la función main() es utilizado por la biblioteca de tiempo de ejecución como el código de salida para el proceso. Tanto Unix como Win32 admiten el concepto de un entero (pequeño) devuelto por un proceso una vez que ha finalizado. Devolver un valor de main() proporciona una forma para que el progtwigdor especifique este valor.

La mayoría de los sistemas operativos informan al usuario, o al proceso de llamada, si una aplicación fue exitosa o no. Esto es especialmente útil en scripts, donde el script puede ramificarse condicionalmente (si-luego) en los resultados de un progtwig. Algo como:

 // pseudo-code screenscrape http://mydatasource.com > results.txt if errorlevel == 0 then processfile results.txt else echo Screen Scraping Failed! end if 

Este estado de resultado se realiza a través del valor de retorno de main.

Si bien algunos comstackdores permiten el vacío principal, en aras de la coherencia y la simplicidad, el estándar ANSI requiere un solo prototipo de principal:

 int main(int argc, char *argv[]); 

Debido a que en C, los argumentos son limpiados por la persona que llama, el autor principal puede dejar de declarar o procesar los argumentos argc y argv. Sin embargo, si las rutinas de configuración que llaman a main esperan un valor de retorno int, y en su lugar no lo encuentran, el comportamiento no puede definirse.

Respuesta corta:

  • El valor de retorno de main es útil para scripting.
  • Las rutinas de instalación y limpieza que invocan a main necesitan una interfaz consistente para usar.

Razón principal para cambiar

vacío principal() { }

a

int main () {}

en lanzamientos posteriores fue para notificar el error ocurrido en el progtwig durante la ejecución al sistema operativo en el que se ejecuta

 return 0; 

identifique el progtwig ejecutado con éxito si devuelve cualquier número en lugar de 0, lo que significa que se produjo un error y que el código de error devuelto por el principal. si está ejecutando en codeblock IDE vea en el log de comstackción si return principal 0 normalmente muestra

 Process terminated with status 0 

de lo contrario, muestra el código de estado en rojo, lo que significa que ocurrió un error

De la Wikipedia:

El valor devuelto por la función principal se convierte en el estado de salida del proceso, aunque el estándar C solo atribuye un significado específico a dos valores: EXIT_SUCCESS (tradicionalmente cero) y EXIT_FAILURE . El significado de otros posibles valores de retorno está definido por la implementación.

Como en C, porque el proceso le dará al sistema operativo un código de salida.

Puedes usar

 int main (int argc, char ** argv) { return (0); } 

o

 int main (int argc, char ** argv) { exit (0); } 

Esto es al menos en C89 IIRC.

Como int es el código de retorno, un progtwig puede regresar al sistema operativo.

Puede consultar este valor para verificar si la operación ha sido exitosa.

Esto fue extremadamente útil cuando se utilizan scripts de línea de comandos.

Cuando ejecutamos nuestro progtwig para verificar si se ejecuta con éxito o no. Entonces, cuando devuelve 0 eso significa que es verdadero y se ejecutó con éxito, si devuelve 1, entonces no se ejecuta con éxito y este valor int le dice al sistema operativo si el progtwig se ejecutó correctamente o no.

Quizás porque tiene sentido salir limpiamente con un código de estado del método main() . En Java, tenemos que emular esto usando System.exit() que no es tan elegante.