¿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?