Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Peraturan C yang Lebih Tegas Berbeza daripada Pendekatan C yang Lebih Berlembut?

Bagaimanakah Peraturan C yang Lebih Tegas Berbeza daripada Pendekatan C yang Lebih Berlembut?

Barbara Streisand
Lepaskan: 2024-12-15 05:06:30
asal
234 orang telah melayarinya

How Does C  's Stricter Rules Differ from C's More Lenient Approach?

Ketidaklengkapan C: Di mana C Mencapah daripada Subsetnya

Walaupun sering mendakwa bahawa C terkandung sepenuhnya dalam C , perbezaan yang halus menyebabkan ini penegasan tidak lengkap. Artikel ini menyerlahkan keadaan di mana kod yang boleh diterima dalam C menjadi tidak serasi dalam C , menjelaskan perbezaan yang membezakannya.

Kepastian Rumit

C menguatkuasakan peraturan yang lebih ketat untuk pembolehubah definisi, melarang tentatif. Mengisytiharkan pembolehubah yang sama berulang kali, seperti dalam int n; int n;, tidak dibenarkan dalam C , tidak seperti dalam C.

Ketaksamaan Keserasian Tatasusunan

C memperkenalkan kekangan keserasian jenis yang tidak wujud dalam C. Dalam C, tatasusunan int a[1] boleh diberikan kepada int penunjuk (*ap)[] = &a, walaupun daripada jenis yang berbeza (int[] lwn. int[1]). Tugasan ini akan gagal dalam C .

Takrifan Fungsi Usang

C meninggalkan gaya definisi fungsi K&R, menjadikan binaan seperti int b(a) int a; { } sintaksis tidak betul.

Perbezaan Skop Struktur Bersarang

Struktur bersarang dalam C mempunyai skop kelas, tidak seperti dalam C. Akibatnya, mengisytiharkan struct bersarang di luar struct bersama takrifan, seperti struct B b;, menghasilkan ralat jenis yang tidak lengkap dalam C .

Penentukan Jenis Eksplisit Diperlukan

C mewajibkan penentu jenis eksplisit untuk semua pengisytiharan. Meninggalkan maklumat jenis, seperti dalam auto a;, membawa kepada ralat sintaks.

C99 Menyumbang Percanggahan Selanjutnya

C99 memperkenalkan ketidakserasian tambahan:

  • Dimensi Tatasusunan: Penentu pengisytiharan dalam tatasusunan dimensi senarai parameter kini mesti sejajar dengan sintaks C (kosong f(int p[statik 100]) { }).
  • Turutan Panjang Boleh Ubah: C melarang ungkapan bukan tetap untuk dimensi tatasusunan pengiraan (int n = 1; int an[n];).
  • Ahli Tatasusunan Fleksibel: C tidak membenarkan ahli tatasusunan fleksibel (struct A { int a; int fam[]; }).
  • Kelayakan Had: C memperkenalkan kelayakan terhad untuk analisis alias, yang tiada dalam C (salinan batal(int *sekat src, int *sekat dst);).

Atas ialah kandungan terperinci Bagaimanakah Peraturan C yang Lebih Tegas Berbeza daripada Pendekatan C yang Lebih Berlembut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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