Aprendí de mi colega que uno puede escribir y ejecutar un programa en C sin escribir una main()función. Se puede hacer así:
my_main.c
/* Compile this with gcc -nostartfiles */
#include <stdlib.h>
void _start() {
int ret = my_main();
exit(ret);
}
int my_main() {
puts("This is a program without a main() function!");
return 0;
}
Compílalo con este comando:
gcc -o my_main my_main.c –nostartfiles
Ejecútalo con este comando:
./my_main
¿Cuándo se necesitaría hacer este tipo de cosas? ¿Hay algún escenario del mundo real en el que esto sea útil?
_start()y otros aspectos externos main().
_startni sobre ningún punto de entrada que no sea main(excepto que el nombre del punto de entrada está definido por la implementación para implementaciones independientes (incrustadas)).
