Rumah > pembangunan bahagian belakang > C++ > Mengapa C 11 Pemula Ditetapkan Tidak Wujud?

Mengapa C 11 Pemula Ditetapkan Tidak Wujud?

Linda Hamilton
Lepaskan: 2024-12-13 15:18:11
asal
424 orang telah melayarinya

Why Don't C  11 Designated Initializers Exist?

Menentukan Ketiadaan Pemula Ditetapkan dalam C 11

Dalam bidang pengaturcaraan, pemula yang ditetapkan mendapat keutamaan dalam standard C99. Pemula ini membenarkan pembangun menetapkan nilai kepada ahli struktur secara selektif, mempertingkatkan kebolehbacaan dan kepekatan kod. Walau bagaimanapun, ketiadaan ketara bagi pemula ini muncul dalam piawaian C 11, menyebabkan pertanyaan mengenai rasional di sebalik peninggalan ini.

Jawatankuasa piawai C 11 telah berulang kali membincangkan kemasukan pemula yang ditetapkan, dengan mempertimbangkan cadangan untuk menerima ciri. Walau bagaimanapun, konsensus tetap menjadi penolakan yang kuat terhadap cadangan tersebut. Jawatankuasa percaya bahawa usaha untuk melaksanakan pemula yang ditetapkan secara sejarah telah menghadapi cabaran yang tidak dapat diatasi.

Pertimbangkan coretan kod berikut dalam C99:

struct Person
{
    int height;
    int weight;
    int age;
};

int main()
{
    Person p { .age = 18 };
}
Salin selepas log masuk

Kod ini memberikan nilai kepada ahli umur Orang tersebut struct sambil membiarkan ahli lain tidak tahu. C99 membenarkan pemula terpilih tersebut, tetapi C 11 tidak.

Salah satu sebab utama untuk pengecualian pemula yang ditetapkan dalam C 11 berpunca daripada susunan penilaian yang tidak dapat diramalkan bagi pemula dalam C99. Piawaian secara samar-samar menerangkan susunan ini sebagai "jujukan tidak tentu", meninggalkan ruang untuk tingkah laku program yang tidak dijangka. Sebagai contoh, jika pemulaan struct Person yang terlibat memanggil fungsi dengan kesan sampingan, susunan pelaksanaan mungkin mempunyai akibat yang tidak diingini, yang tidak semestinya dibenderakan oleh pengkompil.

Sebaliknya, C mempunyai keperluan yang ketat untuk pemula- penilaian senarai, memastikan bahawa pemula dilaksanakan mengikut susunan ia muncul. Menguatkuasakan perintah sedemikian akan memerlukan pemecahan keserasian dengan reka bentuk C99 sebelumnya, yang dianggap tidak boleh diterima oleh jawatankuasa.

Walaupun ketiadaan pemula yang ditetapkan dalam C 11 mungkin pada mulanya mendapat kritikan, batasan yang dikenakan ke atas kemasukan mereka dalam C 20 telah menangani kebimbangan mengenai tingkah laku tidak tentu. Perintah penilaian piawai dalam C 20 memberikan pembangun dengan kepastian dan kawalan yang lebih besar ke atas proses permulaan.

Atas ialah kandungan terperinci Mengapa C 11 Pemula Ditetapkan Tidak Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan