Rekursiviti ke main() dalam C : Sah atau Tidak?
Salah tanggapan umum mengenai C ialah kesahihan rekursi ke dalam utama( ) fungsi. Walaupun nampaknya intuitif bahawa amalan sedemikian dilarang, pengkompil sering tidak membantah kod tersebut. Untuk menjelaskan isu ini, mari kita mendalami selok-belok piawai C.
Menurut piawaian C (3.6.1/3), rekursi ke main() tidak dibenarkan. Piawaian secara eksplisit menyatakan bahawa "Fungsi utama tidak boleh digunakan dalam program." Dalam konteks ini, "digunakan" membayangkan bahawa fungsi itu dirujuk dalam ungkapan yang berpotensi dinilai.
Oleh itu, kod berikut melanggar piawaian C:
int main() { main(); }
Walaupun begitu larangan, sesetengah penyusun mungkin tidak mengeluarkan ralat apabila menemui kod tersebut. Ini boleh menyebabkan pembangun percaya bahawa rekursi ke main() adalah sah, tetapi adalah penting untuk ambil perhatian bahawa tingkah laku ini adalah salah. Pergantungan pada penerimaan pengkompil tidak boleh digantikan dengan pematuhan piawai.
Kesimpulannya, mengikut piawaian C, rekursi ke main() adalah menyalahi undang-undang. Walaupun penyusun mungkin tidak sentiasa menguatkuasakan peraturan ini, pembangun harus mengetahui keperluan standard dan mengelakkan amalan ini dalam kod mereka.
Atas ialah kandungan terperinci Adakah Rekursi menjadi `main()` Sah dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!