Pengecualian kepada C Menjadi Subset C
Walaupun lazimnya dinyatakan bahawa C ialah subset C , pernyataan ini tidak tepat sepenuhnya . Perbezaan muncul apabila membandingkan versi C dan C tertentu .
Perbezaan C89 lwn. C
-
Tiada Definisi Tentatif: C tidak' t membenarkan mengisytiharkan semula pembolehubah dengan nama yang sama tanpa definisi dalam antara.
-
Keserasian Jenis Tatasusunan Berbeza: C membezakan antara tatasusunan saiz tertentu (cth., int a[1]) dan tatasusunan dengan saiz yang tidak ditentukan (cth., int (*ap)[ ]), manakala C membenarkan mereka serasi.
-
Tiada Fungsi K&R Gaya Pengisytiharan: C memerlukan sintaks yang berbeza untuk definisi fungsi, tidak membenarkan gaya K&R lama (cth., int b(a) int a; { }).
-
Perbezaan Skop Struktur Bersarang: Dalam C , struktur bersarang dianggap sebagai pengisytiharan peringkat kelas, menjadikannya tidak boleh diakses di luar lampiran struct.
-
Tiada Jenis int Lalai: Dalam C , pembolehubah auto memerlukan penentu jenis eksplisit, tidak seperti dalam C di mana int diandaikan secara lalai.
C99 vs. Perbezaan C
C99 memperkenalkan tambahan sisihan daripada keserasian C yang ketat:
-
Sekatan Dimensi Tatasusunan: C99 tidak membenarkan aksara khas tertentu dalam menentukan dimensi tatasusunan parameter fungsi.
-
Ketiadaan Pembolehubah Tatasusunan Panjang: Tatasusunan panjang boleh ubah, diisytiharkan menggunakan bukan pemalar ungkapan sebagai saiz, tidak disokong dalam C .
-
Tiada Ahli Tatasusunan Fleksibel: Ahli tatasusunan fleksibel C99, di mana saiz boleh ditentukan pada masa jalankan, tidak serasi dengan C .
-
Kurang Kelayakan Sekatan: Kelayakan Sekatan C, digunakan untuk tujuan pengoptimuman, tidak tersedia dalam C99.
Atas ialah kandungan terperinci Adakah C Benar-Benar Subset C : Meneroka Perbezaan dan Pengecualian Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!