He visto el código D que usa void main
. Es esto legal? En caso afirmativo, ¿la devolución no es void
(int
) también es legal? ¿Por qué esto está permitido en el idioma?Usando `void main` en D
Respuesta
de la función D Language Reference
principal()
Para programas de la consola, main() sirve como punto de entrada. Se llama después de que se ejecutan todos los inicializadores del módulo y después de que se ejecutan las pruebas de unidad. Después de que vuelve, se ejecutan todos los destructores del módulo. main() debe declararse usando uno de los siguientes formas:
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
Así void main
es legal.
De los mismos documentos, return statement parte:
Un regreso sale de la función actual y suministra su valor de retorno. Se requiere expresión si la función especifica un tipo de devolución que no es nulo. La expresión se convierte implícitamente en la función return type
Parece que devolver algo de una función void no está explícitamente desautorizado (y de hecho lo hace compila bien).
(¿Por qué quieres hacer eso aunque?)
Adición : cuando 'void main' finaliza, D sale con 0. Cuando' main' sale por excepción, el tiempo de ejecución finaliza con un código de error apropiado. No se permite devolver un valor de una función no nula y se producirá un error en el tiempo de ejecución. – FeepingCreature
Las siguientes versiones de la función main()
son legales:
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
Los void main
versiones son las mismas que las versiones int main
, si siempre devuelve 0 o tira.
- 1. ¿Diferencia entre void main e int main?
- 2. Java - public static void main()
- 3. ¿Por qué main() en java void?
- 4. ¿Qué estuvo mal con void main()?
- 5. ¿el estándar C++ prohíbe el prototipo void main()?
- 6. Usando Require.js sin data-main
- 7. Usando Environment.ExitCode versus return int desde Main
- 8. Extendiendo AsyncTask <Void, Void, Void>
- 9. no se puede convertir '* void (MyClass :: *) (void *) en void * (*) (void *) en la función pthread_create
- 10. En java, ¿se puede renombrar o refactorizar "public static void main"?
- 11. punteros void en C++
- 12. ¿Qué significa "void * (*) (void *)" en C++?
- 13. C printf usando% d y% f
- 14. Usando la palabra main como identificador
- 15. Plantilla en programación D
- 16. C Dereference void * puntero
- 17. Usando el tipado dinámico en D, un lenguaje estáticamente tipado
- 18. Importación de módulos en D
- 19. ¿Cómo puede D devolver 0 en caso de éxito y no cero en caso de error si main es nulo?
- 20. Múltiples métodos main() en java
- 21. regreso de una función void
- 22. Definición de main() en C
- 23. Cómo autocompletar main() en eclipse?
- 24. Sin Main() en WPF?
- 25. Clojure -main en IntelliJ
- 26. main() función en JavaScript?
- 27. Convertir void * a double
- 28. Plantillas de expresión en D
- 29. ¿Qué es "-d" en "npm -d install"?
- 30. En java -D ¿qué significa la D?
Véase también http://stackoverflow.com/questions/3888661/how-can-d-return-0-on-success-and-non-zero-on-failure-if-main-is-void –