Apabila menghadapi sintaks yang samar-samar,
A a( A() );
soalan yang menarik timbul: mengapa piawaian C mengutamakan tafsiran ini sebagai pengisytiharan fungsi ke atas definisi pembolehubah? Perbezaan daripada jangkaan biasa ini menimbulkan perdebatan sama ada pendirian standard harus sejajar dengan gerak hati pengaturcara yang meluas.
Untuk memahami pilihan ini, mari kita mendalami konsep yang dikenali sebagai "Most Vexing Parse" (MVP). Pertimbangkan tugas mudah untuk mengisytiharkan fungsi:
A foo();
Jika tiada MVP, kod ini akan ditafsirkan sebagai mentakrifkan pembolehubah bernama "foo." Untuk memperkenalkan kata kunci baharu atau menggunakan sintaks yang lebih kompleks untuk pengisytiharan fungsi akan merumitkan bahasa. Sebaliknya, MVP memastikan ketekalan merentas struktur sintaksis yang serupa.
Dalam contoh ini, pengisytiharan yang tidak jelas
A foo;
mentakrifkan pembolehubah, manakala
A foo();
mengisytiharkan fungsi . Dengan memperluaskan logik ini kepada kes MVP yang lebih rumit, kami mengekalkan konsistensi. Ia memudahkan peraturan kepada "mentafsirkan apa-apa sahaja yang berpotensi menyerupai perisytiharan sebagai perisytiharan." Pendekatan ini mengurangkan keperluan untuk pengecualian atau kelayakan yang kompleks.
Walaupun penjelasan ini mungkin tidak menyatakan sepenuhnya motivasi sejarah di sebalik MVP, ia menyerlahkan faedah praktikalnya—konsistensi dan kesederhanaan dalam sintaks bahasa. Sama ada alasan ini sejajar dengan gerak hati pengaturcaraan biasa masih menjadi perdebatan berterusan dalam komuniti C.
Atas ialah kandungan terperinci Mengapa C Mengutamakan Pengisytiharan Fungsi Daripada Definisi Pembolehubah dalam Sintaks Ambigu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!