Mengapa Beberapa Kod C Gagal Disusun dalam C?
Dec 18, 2024 am 10:16 AMC sebagai Subset C : Pengecualian Diterangkan
Walaupun selalunya dinyatakan bahawa C ialah subset C , terdapat keadaan tertentu di mana kod mungkin disusun dengan lancar dalam C tetapi gagal dalam C .
Kes di mana Kod Gagal dalam C
-
Definisi Tentatif:
C membenarkan berbilang pengisytiharan nama pembolehubah yang sama, tetapi C melarang ini dengan ralat "n sudah ditakrifkan."int n; int n; // error: redeclaration of 'n'
Salin selepas log masuk -
Turutan Tidak Serasi Jenis:
C membenarkan menetapkan tatasusunan kepada penunjuk dengan jenis yang berbeza (cth., int[1] kepada int *()), manakala C tidak membenarkan penukaran tersebut.int a[1]; int (*ap)[] = &a; // error: 'a' does not have type 'int[]'
Salin selepas log masuk -
Gaya Definisi Fungsi K&R:
C membenarkan definisi fungsi menggunakan sintaks int b(a) int a; { }, tetapi C menganggapnya sebagai ralat tatabahasa.int b(a) int a; { } // error: grammar error
Salin selepas log masuk -
Skop Struktur Bersarang:
C membolehkan pengisytiharan struct bersarang dengan skop kelas, tetapi C menganggapnya sebagai pembolehubah tempatan sebaliknya.struct A { struct B { int a; } b; int c; }; struct B b; // error: 'b' has incomplete type
Salin selepas log masuk -
Pengisytiharan Lalai:
C membenarkan pengisytiharan pembolehubah tanpa menyatakan jenisnya (cth., auto a;), tetapi C memerlukan eksplisit penentu jenis.auto a; // error: type-specifier missing
Salin selepas log masuk
Pengecualian Tambahan dalam C99
-
Dimensi Tatasusunan dalam Parameter:
C99 melarang penentu seperti statik dalam pelbagai dimensi fungsi parameter.void f(int p[static 100]) { } // error: invalid syntax
Salin selepas log masuk -
Tatasusunan Panjang Boleh Ubah:
C99 tidak menyokong tatasusunan panjang berubah (VLA) di mana saiz tatasusunan dikira semasa masa jalan.int n = 1; int an[n]; // error: 'n' is not a constant expression
Salin selepas log masuk -
Turutan Fleksibel Ahli:
C99 tidak mempunyai ahli tatasusunan fleksibel (FAM) yang boleh mempunyai ahli data bersaiz berubah dalam struct.struct A { int a; int fam[]; }; // error: 'fam' has incomplete type
Salin selepas log masuk -
Kelayakan Had:
C99 membenarkan kelayakan sekatan untuk menentukan bukan pengaliasian memori, yang C tidak sokongan.void copy(int *restrict src, int *restrict dst); // error: two names for one parameter
Salin selepas log masuk
Atas ialah kandungan terperinci Mengapa Beberapa Kod C Gagal Disusun dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
