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

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