Rumah > pembangunan bahagian belakang > C++ > Apakah Perbezaan Kod C99 dan C Menyebabkan Ralat Penyusunan?

Apakah Perbezaan Kod C99 dan C Menyebabkan Ralat Penyusunan?

Barbara Streisand
Lepaskan: 2024-12-16 09:23:11
asal
649 orang telah melayarinya

What C99 and C   Code Differences Cause Compilation Errors?

Pengecualian Keserasian C99 dan C

Walaupun C secara amnya merupakan subset C , nuansa tertentu dalam bahasa C melarang penyusunan langsung beberapa kod C yang sah. Berikut ialah beberapa perbezaan utama untuk dipertimbangkan:

1. Tiada Definisi Tentatif

C membenarkan berbilang pengisytiharan pembolehubah dengan nama yang sama, tetapi C tidak. Akibatnya, kod berikut, yang sah dalam C, tidak akan disusun dalam C :

int n;
int n; // ill-formed: n already defined
Salin selepas log masuk

2. Jenis Tatasusunan Tidak Serasi

Dalam C, tatasusunan boleh diisytiharkan sama ada dengan sintaks int[] atau int[N]. Walau bagaimanapun, C melayan ini secara berbeza. Kod berikut, yang sah dalam C, akan menimbulkan ralat dalam C :

int a[1];
int (*ap)[] = &a; // ill-formed: a does not have type int[]
Salin selepas log masuk

3. Gaya Definisi Fungsi K&R Tidak Dibenarkan

C menyokong gaya definisi fungsi K&R, tetapi C tidak. Kod berikut, yang sah dalam C, tidak akan disusun dalam C :

int b(a) int a; { } // ill-formed: grammar error
Salin selepas log masuk

4. Perbezaan Skop Struktur Bersarang

Dalam C, struct bersarang mempunyai skop fail, manakala dalam C , ia mempunyai skop kelas. Ini bermakna kod berikut, yang sah dalam C, tidak akan disusun dalam C :

struct A { struct B { int a; } b; int c; };
struct B b; // ill-formed: b has incomplete type (*not* A::B)
Salin selepas log masuk

5. No Default int

C tidak membenarkan pembolehubah integer lalai kepada int, tidak seperti C. Oleh itu, kod berikut, yang sah dalam C, akan menimbulkan ralat dalam C :

auto a; // ill-formed: type-specifier missing
Salin selepas log masuk

Pengecualian Tambahan dalam C99

Selain pengecualian ini, C99 memperkenalkan ketidakserasian lanjut dengan C :

  • Tiada pengendalian khas penentu pengisytiharan dalam dimensi tatasusunan parameter.
  • Tiada tatasusunan panjang berubah-ubah.
  • Tiada ahli tatasusunan yang fleksibel.
  • Tiada kelayakan sekatan untuk analisis penyalian.

Atas ialah kandungan terperinci Apakah Perbezaan Kod C99 dan C Menyebabkan Ralat Penyusunan?. 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