Salah Tanggapan Utama() sebagai Permulaan Mutlak dalam C
Bertentangan dengan kepercayaan popular, Standard C dalam bahagian $3.6.1/ 1, dengan menyatakan bahawa "Sesuatu program hendaklah mengandungi fungsi global yang dipanggil utama, yang merupakan permulaan program yang ditetapkan," tidak membayangkan bahawa tiada kod mendahului pelaksanaan main(). Sebaliknya, ia menetapkan konsep "mula" sebagai titik khusus dalam program.
Untuk menggambarkan perbezaan ini, pertimbangkan coretan kod berikut:
int square(int i) { return i*i; } int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; } int main_ret= user_main(); int main() { return main_ret; }
Kod ini memulakan pembolehubah global main_ret dengan melaksanakan user_main() sebelum menggunakan fungsi main(). Walaupun perintah pelaksanaan ini, user_main() tidak dianggap sebagai "permulaan" sebenar program seperti yang ditakrifkan oleh Standard.
Takrifan "Start" dalam C Standard
Pusat perkara ini terletak pada tafsiran "mula." Standard menetapkan main() sebagai "permulaan yang ditetapkan" program, dengan berkesan mentakrifkan "mula" sebagai titik di mana main() dipanggil. Walau bagaimanapun, ia tidak melarang pelaksanaan kod sebelum penetapan ini.
Implikasi untuk Pematuhan Kod
Berdasarkan tafsiran ini, coretan kod yang diberikan adalah mematuhi sepenuhnya Piawaian C. Walaupun user_main() melaksanakan sebelum main(), "start" program kekal pada titik di mana main() dipanggil.
Kesimpulan
Walaupun nampaknya intuitif bahawa main() harus menjadi permulaan mutlak program C, Standard menggunakan definisi yang berbeza. Ia menetapkan main() sebagai titik yang ditetapkan di mana program "bermula" untuk tujuan pelaksanaan dan spesifikasi selanjutnya.
Atas ialah kandungan terperinci Adakah `main()` Benar-Benar Menandakan Permulaan Mutlak Program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!