Aprendi com meu colega que se pode escrever e executar um programa C sem escrever uma main()
função. Isso pode ser feito assim:
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;
}
Compile com este comando:
gcc -o my_main my_main.c –nostartfiles
Execute-o com este comando:
./my_main
Quando alguém precisaria fazer esse tipo de coisa? Existe algum cenário do mundo real em que isso seria útil?
_start()
e outras coisas fora de main()
.
_start
, ou sobre qualquer ponto de entrada que não seja main
(exceto que o nome do ponto de entrada é definido pela implementação para implementações independentes (incorporadas)).