Rumah >pembangunan bahagian belakang >C++ >Mengapakah Bekas Standard C Lazimnya Melarang Jenis Tidak Lengkap?

Mengapakah Bekas Standard C Lazimnya Melarang Jenis Tidak Lengkap?

Susan Sarandon
Susan Sarandonasal
2024-12-21 18:26:11857semak imbas

Why Do C   Standard Containers Typically Forbid Incomplete Types?

Rasional Di Sebalik Bekas C Melarang Jenis Tidak Lengkap

Dalam dunia pengaturcaraan C, bekas ialah struktur data penting untuk mengatur dan memanipulasi data. Walau bagaimanapun, satu ciri khas bekas C ialah keengganan mereka terhadap jenis yang tidak lengkap. Mengapa demikian?

Jawapannya terletak pada evolusi sejarah C . Pada hari-hari awal, pelaksanaan Perpustakaan Templat Standard (STL) bergelut untuk mengendalikan bekas dengan jenis yang tidak lengkap. Untuk mengekalkan kestabilan dan keserasian ke belakang, jawatankuasa penyeragaman membuat keputusan untuk mengharamkan terus bekas sedemikian dalam piawaian C.

Sekatan ini amat berkesan dalam menghalang struktur data rekursif. Ia juga memastikan bahawa pelaksanaan STL sedia ada boleh terus berfungsi seperti yang diharapkan tanpa memperkenalkan sebarang isu yang tidak diduga.

Walau bagaimanapun, larangan ke atas jenis yang tidak lengkap turut mengundang kritikan. Ia mengehadkan pelaksanaan struktur data lanjutan tertentu dan akan mendapat manfaat daripada semakan semula dalam semakan semula piawai C pada masa hadapan.

Walaupun bekas standard kekal tidak lengkap, pereka perpustakaan seperti mereka yang berada di belakang boost::container telah mengambil inisiatif untuk mencipta bekas mereka sendiri yang tidak mengenakan sekatan ini. Keputusan ini membolehkan lebih fleksibiliti dan fleksibiliti dalam pengaturcaraan C.

Kemas kini:

Dengan kemunculan C 17, bekas tertentu dalam Perpustakaan Standard C telah dipinda kepada benarkan jenis yang tidak lengkap. Walau bagaimanapun, ini bukan perubahan sejagat, dan larangan am kekal digunakan untuk kebanyakan bekas dalam standard.

Atas ialah kandungan terperinci Mengapakah Bekas Standard C Lazimnya Melarang Jenis Tidak Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn