Rumah > pembangunan bahagian belakang > C++ > Mengapakah Pemula yang Ditetapkan Tidak Hadir dari C 11?

Mengapakah Pemula yang Ditetapkan Tidak Hadir dari C 11?

Barbara Streisand
Lepaskan: 2024-12-08 21:11:11
asal
662 orang telah melayarinya

Why Were Designated Initializers Absent from C  11?

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:

  • Permulaan Pembina: Membenarkan pemulaan ahli yang jelas dalam definisi kelas.
  • Senarai Permulaan Ahli: Mendayakan pemula ahli secara langsung dalam pembina.
  • Agregat Permulaan: Serupa dengan pemulaan yang ditetapkan, tetapi digunakan pada jenis agregat (cth., struct).

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!

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