Memahami Peraturan Parse Paling Menjengkelkan
The Most Vexing Parse (MVP) ialah peraturan dalam C yang sering membawa kepada tingkah laku yang tidak dijangka semasa menghurai . Pertimbangkan coretan kod berikut:
A a( A() );
Coretan ini boleh ditafsirkan dalam dua cara:
Mengikut piawaian C, kod ini ditafsirkan sebagai yang terakhir. Tetapi mengapa ini berlaku?
Reasoning Behind the Standard
Jika MVP tidak wujud, pengisytiharan fungsi akan menjadi samar-samar kerana kod berikut akan ditafsirkan sebagai definisi berubah-ubah, bukan pengisytiharan kaedah:
A foo();
Untuk mengelakkan kekaburan ini, MVP memerlukan semua yang boleh ditafsirkan sebagai pengisytiharan ditafsirkan sebagai pengisytiharan. Dalam erti kata lain, sebarang kod yang boleh ditafsirkan sebagai definisi pembolehubah, pengisytiharan fungsi atau definisi kelas akan ditafsirkan sedemikian.
Konsistensi ini memudahkan proses penghuraian dan memudahkan pengkompil mengenal pasti maksud yang dimaksudkan kod. Ia juga sejajar dengan prinsip umum C bahawa "setiap ungkapan adalah sama ada pengisytiharan atau ungkapan."
Kesimpulan
Walaupun MVP kadangkala boleh membawa kepada hasil penghuraian yang tidak dijangka , ia memberikan ketekalan dan kejelasan kepada sintaks C. Dengan memastikan semua kod yang boleh ditafsirkan sebagai pengisytiharan ditafsirkan sedemikian, MVP membantu mengelakkan kekaburan dan memudahkan proses penghuraian untuk pengkompil.
Atas ialah kandungan terperinci Mengapa Penghuraian Paling Menjengkelkan C Mentafsir 'A a(A());' sebagai Pengisytiharan Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!