Rumah >pembangunan bahagian belakang >C++ >Bilakah `goto` Sebenarnya Bermanfaat dalam C dan C?
Contoh Pelaksanaan Goto Berfaedah dalam C dan C
Walaupun terdapat penolakan yang meluas terhadap kenyataan goto, terdapat keadaan di mana ia boleh digunakan dengan berkesan . Urutan ini meneroka kes sedemikian, diilhamkan oleh jawapan undian naik yang pada mulanya dianggap sebagai jenaka.
Kajian Kes: Gelung Infinite
Contoh berikut menunjukkan yang khusus dan didokumenkan penggunaan goto:
infinite_loop: // code goes here goto infinite_loop;
Gelung ini lebih disukai daripada alternatif kerana kejelasannya dan kekhususan. Goto mewakili cawangan tanpa syarat, manakala alternatifnya bergantung pada struktur dengan cawangan bersyarat dan merosot keadaan sentiasa benar. Selain itu, label mendokumentasikan niat, menghapuskan keperluan untuk ulasan tambahan.
Kajian Kes: Pembersihan dalam C
Dalam C, penggunaan biasa goto adalah untuk bercabang ke blok pembersihan:
void foo() { if (!doA()) goto exit; if (!doB()) goto cleanupA; if (!doC()) goto cleanupB; /* everything has succeeded */ return; cleanupB: undoB(); cleanupA: undoA(); exit: return; }
Pendekatan ini membolehkan pengendalian ralat yang ringkas dan berstruktur. Setiap keadaan ralat yang berpotensi dikendalikan dengan pernyataan goto yang bercabang kepada kod pembersihan yang sesuai. RAII dalam C menyediakan cara yang lebih idiomatik untuk mengendalikan senario sedemikian.
Kriteria Penilaian
Untuk memastikan penilaian yang adil, kriteria berikut telah ditetapkan:
Atas ialah kandungan terperinci Bilakah `goto` Sebenarnya Bermanfaat dalam C dan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!