¿Por qué necesitamos usar `int main` y no` void main` en C ++? [duplicar]
-
19-08-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- ¿Qué debería devolver main () en C y C ++? 17 respuestas
¿Por qué necesitamos usar int main
y no void main
en C ++?
Solución
La respuesta corta, es porque el estándar C ++ requiere main ()
para devolver int
.
Como probablemente sepa, el valor de retorno de la función main ()
es utilizado por la biblioteca en 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 programador especifique este valor.
Otros consejos
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 las secuencias de comandos, donde la secuencia de comandos puede ramificarse condicionalmente (si es así) en los resultados de un programa. Algo en la línea de:
// pseudo-code
screenscrape http://mydatasource.com > results.txt
if errorlevel == 0 then
processfile results.txt
else
echo Screen Scraping Failed!
end if
Este estado del resultado se realiza mediante el valor de retorno de main.
Si bien algunos compiladores permiten anular main, en aras de la coherencia y la simplicidad, el estándar ANSI requiere un único prototipo de main:
int main(int argc, char *argv[]);
Debido a que en C, la persona que llama limpia los argumentos, el autor de main puede descuidar declarar o procesar los argumentos argc & amp; argv. Sin embargo, si las rutinas de configuración que llaman a main esperan un valor de retorno int y, en cambio, no encuentran uno, el comportamiento puede ser indefinido.
Respuesta corta:
- El valor de retorno de main es útil para secuencias de comandos.
- Las rutinas de configuración y limpieza que invocan main necesitan una interfaz consistente para usar.
Motivo principal para cambiar
void main () {}
a
int main () {}
en versiones posteriores era notificar error ocurrido en el programa durante la ejecución al sistema operativo en el que se ejecuta
return 0;
el programa de identificación se ejecutó con éxito si se devuelve algún número en lugar de 0, lo que significa que se produjo un error de quién es código de error devuelto por main. si está ejecutando en IDE de bloque de código , vea en el registro de compilación si el retorno principal 0 normalmente se 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 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) yEXIT_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.
Debido a que int es el código de retorno, un programa puede regresar al sistema operativo.
Puede consultar este valor para verificar si la operación ha sido exitosa.
Esto fue extremadamente útil al usar scripts de línea de comandos.
Cuando ejecutamos nuestro programa para verificar que se ejecute con éxito o no. Entonces, cuando devuelve 0, eso significa que es cierto & amp; se ejecutó correctamente, si devuelve 1, entonces no se ejecuta correctamente & amp; este valor int
le dice al sistema operativo si el programa 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.