Meslektaşımdan, main()
işlevini yazmadan bir C programını yazıp çalıştırabileceğini öğrendim. BuC dilinde _start() kullanımı nedir?
// Compile it with gcc -nostartfiles
void _start() {
int ret = my_main();
exit(ret);
}
int my_main() {
puts("This is a program without main!\n");
return 0;
}
olarak derleme withoutMain.c
altında olarak yapılabilir:
gcc -o withoutMain withoutMain.c –nostartfiles
Run o kadar: Biri gerekir zaman ./ withoutMain
Benim sorum Bu tür bir şey yapmak? Bazı gerçek dünya senaryosu? main
iken
Uzaktan ilgili: http://stackoverflow.com/questions/2548486/compiling-without-libc –
Programların nasıl başlatıldığının bazı iç çalışmalarını gösteren klasik makale: [Gerçekten Teensy ELF Executables oluşturma konusunda bir kasırga öğreticisi Linux] (http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html). Bu, _start() 'ın bazı daha ince noktalarını ve 'main()' dışındaki diğer şeyleri tartışan iyi bir okumadır. –
C dili kendisi _start' 'hakkında hiçbir şey söylemez ya' main' dışında herhangi bir giriş noktası hakkında (giriş noktasının adı Uygulama tanımlı (embedded) uygulamalarını ayaklı için olduğunu hariç). –