Tôi học được từ đồng nghiệp của mình rằng một người có thể viết và thực thi một chương trình C mà không cần viết một main()
hàm. Nó có thể được thực hiện như thế này:
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;
}
Biên dịch nó bằng lệnh này:
gcc -o my_main my_main.c –nostartfiles
Chạy nó bằng lệnh này:
./my_main
Khi nào người ta cần làm loại điều này? Có bất kỳ kịch bản thế giới thực nào mà điều này sẽ hữu ích không?
_start()
và những thứ khác bên ngoài main()
.
_start
, hoặc về bất kỳ điểm nhập nào khác ngoài main
(ngoại trừ tên của điểm nhập được định nghĩa triển khai cho các triển khai tự do (nhúng)).