Menghuraikan Paling Menjengkelkan merujuk kepada kekaburan tatabahasa dalam C yang boleh membawa kepada hasil yang tidak dijangka apabila mengisytiharkan fungsi . Satu perincian mengelirukan yang timbul ialah keupayaan untuk menghuraikan baris tertentu sebagai pengisytiharan fungsi, walaupun apabila ia kelihatan tidak mematuhi sintaks yang dijangkakan.
Pertimbangkan baris berikut:
vector<int> v(istream_iterator<int>(cin), istream_iterator<int>());
Baris ini boleh ditafsirkan sebagai pengisytiharan fungsi kerana Parse Paling Menjengkelkan. Lelaran sementara pertama, istream_iterator
Walau bagaimanapun, ia tidak segera jelas jenis yang diwakili oleh lelaran sementara pertama. Kunci untuk memahami perkara ini ialah menyedari bahawa istream_iterator
Ini menimbulkan persoalan sama ada nama argumen boleh dikurung sewenang-wenangnya dalam panggilan fungsi. Jawapannya ya, anda boleh kurungkan nama hujah jika anda ingin menyerlahkannya atau menjelaskan tujuannya. Walau bagaimanapun, ia biasanya tidak digalakkan kerana ia boleh membawa kepada kod yang mengelirukan atau tidak dijangka. Tujuan utama sintaks ini adalah untuk menyokong sintaks warisan yang diwarisi daripada C dan tidak dianggap sebagai amalan terbaik dalam kod C moden.
Atas ialah kandungan terperinci Apakah Masalahnya dengan Mengkurung Nama Hujah dalam Parse Paling Menjengkelkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!