Rumah >pembangunan bahagian belakang >C++ >Adakah Rekursi ke Main() Dibenarkan secara Sah dalam C ?

Adakah Rekursi ke Main() Dibenarkan secara Sah dalam C ?

DDD
DDDasal
2024-11-12 16:41:02906semak imbas

Is Recursion into Main() Legally Allowed in C  ?

Menerokai Kesahan Rekursi ke Utama() dalam C

Perdebatan berulang di kalangan pengaturcara ialah kesahihan rekursi ke main() dalam C . Walaupun sesetengah sumber mencadangkan ia dilarang, yang lain menunjukkan tingkah laku yang seolah-olah bercanggah bagi pengkompil yang menerima kod tersebut.

Perspektif Piawaian C

Mengikut piawaian C dalam 3.6. 1/3, rekursi ke main() adalah dilarang secara jelas: "Fungsi utama tidak boleh digunakan dalam program."

Memahami "Digunakan" dalam Konteks Piawaian

Piawaian mentakrifkan "digunakan" sebagai: "Sesuatu objek atau fungsi tanpa beban digunakan jika namanya muncul dalam ungkapan yang berpotensi dinilai."

Dalam kes kod contoh dibentangkan:

int main()
{
    main();
}

Panggilan ke main() muncul dalam kandungan main(), yang merupakan ungkapan yang berpotensi dinilai. Oleh itu, mengikut takrif standard, main() digunakan dalam program, menjadikannya haram.

Kelakuan Penyusun dan Pengecualian Potensi

Walaupun larangan standard, penyusun menyukai g boleh menyusun kod tersebut tanpa ralat. Tingkah laku ini biasanya tidak disyorkan dan tidak boleh dipercayai. Penyusun boleh mengendalikan situasi sedemikian dalam cara yang tidak standard atau khusus pelaksanaan.

Mengelakkan Rekursi ke Utama()

Untuk memastikan pematuhan dengan piawaian C dan mengelakkan potensi isu , adalah sangat dinasihatkan untuk mengelakkan rekursi ke main(). Sebaliknya, pertimbangkan untuk menggunakan corak reka bentuk alternatif atau teknik pengaturcaraan untuk mencapai kefungsian yang diingini tanpa melanggar peraturan bahasa.

Atas ialah kandungan terperinci Adakah Rekursi ke Main() Dibenarkan secara Sah dalam 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