La norma ISO 1998 C++ especifica que no usar explícitamente una instrucción return en la parte principal es equivalente a usar return 0
. Pero, ¿qué sucede si una implementación tiene un código estándar diferente de "error", por ejemplo -1
?¿Por qué el valor de retorno predeterminado de main es 0 y no EXIT_SUCCESS?
¿Por qué no utilizar la macro estándar EXIT_SUCCESS
que se reemplazará por 0
o -1
o cualquier otro valor según la implementación?
C++ parece forzar la semántica del programa, que no es el papel de un lenguaje que solo debería describir cómo se comporta el programa. Además, la situación es diferente para el valor de retorno de "error": solo EXIT_FAILURE
es una bandera de terminación de "error" estándar, sin valor explícito, como "1", por ejemplo.
¿Cuáles son las razones de estas elecciones?
solo para aclarar, que se especifica para la función exit(), y 3.6.1: 5 estados tat el efecto de regresar de main es dejar main y luego llamar a exit(). Entonces sí, tienes razón. :) – jalf
En otras palabras, cero y 'EXIT_SUCCESS' son valores de retorno equivalentes, por lo que no importa cuál sea el estándar requerido que se devuelva por defecto. –
Muy interesante, significa que el estándar C++ no fuerza el "código de éxito" del host. Devolver "0" de un programa C++ no garantiza que el sistema host recibirá "0" y significa que el comportamiento de la declaración de retorno C++ podría ser diferente de lo que el programador especificó: "return 0" podría estar en una implementación "reemplazado" por "retorno 1"? – Pragmateek