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
157 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!

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