Pemula yang Ditetapkan dalam C : Mengapa Ketiadaan dalam C 11
Pengabaikan pemula yang ditetapkan dalam C 11 kekal sebagai persoalan yang menarik bagi ramai pengaturcara . Dalam C99, sintaks pemula yang ditetapkan, seperti .age = 18, membolehkan pemulaan yang mudah bagi ahli tertentu sesuatu struct. Walau bagaimanapun, ciri ini tidak terdapat dalam C 11.
Rasional Pengecualian
Jawatankuasa standard C 11 telah berulang kali menolak cadangan untuk pemula yang ditetapkan. Rasional mereka berpunca daripada beberapa kerumitan yang wujud:
Perintah Pelaksanaan Tidak Tentu:
C99 tidak mempunyai peraturan khusus untuk menilai ungkapan pemula yang ditetapkan. Susunan penilaian berlaku adalah tidak tentu, berpotensi membawa kepada ketidakkonsistenan dalam tingkah laku program. Sebaliknya, C menguatkuasakan tertib penilaian klausa pemula yang ketat.
Isu Keserasian:
Melaksanakan pemula yang ditetapkan dalam C akan memerlukan pemecahan keserasian dengan pelaksanaan C99 sedia ada. Ini akan memperkenalkan ketidakkonsistenan dan kemungkinan ralat untuk memindahkan kod.
Sekatan Bersarang dan Tatasusunan:
C99 membenarkan penyarangan pemula yang ditetapkan dan pemulaan yang ditetapkan bagi tatasusunan. Ciri-ciri ini terbukti mencabar untuk dimasukkan ke dalam C tanpa menjejaskan ketekalan bahasa.
C99 Standards Clash:
Pemula yang ditetapkan dalam C99 juga membenarkan pemulaan ahli tanpa menyatakan semua ahli. Ini berbeza dengan keperluan C bahawa semua atau tiada ahli struct mesti dimulakan menggunakan penunjuk.
Sokongan Terhad dalam C 20
Sebagai tindak balas kepada permintaan industri, jawatankuasa C sejak itu telah memperkenalkan sokongan terhad untuk pemula yang ditetapkan dalam C 20. Walau bagaimanapun, pelaksanaan ini mengenakan sekatan yang menangani kebimbangan yang dinyatakan di atas. Pemula yang ditetapkan mesti digunakan dalam susunan pengisytiharan yang ketat, pemulaan bersarang dan tatasusunan tidak disokong dan semua atau tiada ahli struct mesti dimulakan dengan penunjuk.
Alternatif
Walaupun kekurangan pemula yang ditetapkan gaya C99, C menyediakan kaedah alternatif untuk memulakan kelas ahli:
Atas ialah kandungan terperinci Mengapakah Pemula yang Ditetapkan Tidak Hadir dari C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!