J'ai appris de mon collègue que l'on peut écrire et exécuter un programme C sans écrire de main()
fonction. Cela peut être fait comme ceci:
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;
}
Compilez-le avec cette commande:
gcc -o my_main my_main.c –nostartfiles
Exécutez-le avec cette commande:
./my_main
Quand faudrait-il faire ce genre de chose? Y a-t-il un scénario du monde réel où cela serait utile?
_start()
et d'autres choses en dehors de main()
.
_start
, ou sur tout point d'entrée autre que main
(sauf que le nom du point d'entrée est défini par l'implémentation pour les implémentations autonomes (intégrées)).