Rumah >pembangunan bahagian belakang >C++ >Adakah `main()` Benar-Benar Menandakan Permulaan Mutlak Program C?

Adakah `main()` Benar-Benar Menandakan Permulaan Mutlak Program C?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 22:45:20755semak imbas

Does `main()` Truly Mark the Absolute Beginning of a C   Program?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn