Avatar ·

¿Qué debe devolver la función main() en C++? Valores de retorno correctos

¡Hola, colegas! Acabo de empezar a aprender C++ y tengo una pregunta fundamental sobre la función `main()`. En diferentes ejemplos de código veo que `main()` se declara con tipo `int`, pero a veces encuentro `void main()` o incluso solo `main()` sin tipo. Estoy muy confundido. Aquí hay algunos ejemplos que he encontrado: ```cpp // Ejemplo 1 void main() { // ... } // Ejemplo 2 main() { // ... } // Ejemplo 3 int main() { // ... return 0; } // Ejemplo 4 int main() { // ... return 1; } ``` Mi compilador (Visual Studio 2019) se queja de `void main()`, pero he visto que en algunos libros antiguos se usa. ¿Y qué hay del `return`? Leí en algún lugar que `return 0` significa finalización exitosa, y `return 1` significa error. Pero ¿qué pasa si no devuelvo nada? ¿Se considerará un error? Y en general, ¿por qué el sistema operativo necesita saber qué devolvió mi programa? También he oído hablar de las constantes `EXIT_SUCCESS` y `EXIT_FAILURE`. ¿Cuándo debería usarlas?