Rumah pembangunan bahagian belakang C++ Mengapa Beberapa Kod C Gagal Disusun dalam C?

Mengapa Beberapa Kod C Gagal Disusun dalam C?

Dec 18, 2024 am 10:16 AM

Why Does Some C Code Fail to Compile in C  ?

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

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan? Mar 03, 2025 pm 05:52 PM

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

Gulc: Perpustakaan C dibina dari awal Gulc: Perpustakaan C dibina dari awal Mar 03, 2025 pm 05:46 PM

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Langkah Format Fungsi Fungsi C Langkah Penukaran Kes Mar 03, 2025 pm 05:53 PM

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu Mar 03, 2025 pm 05:53 PM

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza Penggunaan dan perkongsian frasa yang berbeza Mar 03, 2025 pm 05:51 PM

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan? Mar 03, 2025 pm 05:51 PM

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

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Bagaimana Perpustakaan Templat St Standard (STL) berfungsi? Mar 12, 2025 pm 04:50 PM

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap? Mar 12, 2025 pm 04:52 PM

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

See all articles