Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Pengecam Tidak Diisytiharkan' dalam Kod Saya?

Mengapa Saya Mendapat Ralat 'Pengecam Tidak Diisytiharkan' dalam Kod Saya?

Susan Sarandon
Susan Sarandonasal
2024-12-19 01:56:10141semak imbas

Why Am I Getting

Ralat Pengecam Tidak Diisytiharkan: Punca dan Penyelesaian

Ralat pengecam yang tidak diisytiharkan timbul apabila pengkompil menemui rujukan kepada pembolehubah, fungsi atau jenis yang belum diisytiharkan atau ditakrifkan dalam skop semasa. Ralat ini biasanya disebabkan oleh salah satu sebab berikut:

Kehilangan Kemasukan Fail Pengepala

Punca paling biasa bagi ralat pengecam yang tidak diisytiharkan ialah peninggalan fail pengepala yang diperlukan yang mengandungi pengisytiharan pengecam. Contohnya, dalam C , contoh berikut akan menghasilkan ralat 'pengecam tidak diisytiharkan' untuk fungsi 'cout':

int main() {
    cout << "Hello world!" << endl;
    return 0;
}

Untuk menyelesaikan isu ini, masukkan fail pengepala:

#include 
int main() {
    cout << "Hello world!" << endl;
    return 0;
}

Pembolehubah atau Fungsi Tersalah Eja

Satu lagi sumber biasa ralat ini ialah pengecam salah eja. Sebagai contoh, kod berikut akan menghasilkan ralat disebabkan pembolehubah yang salah eja 'AComplicatedName' pada baris kedua:

int main() {
    int aComplicatedName;
    AComplicatedName = 1;  /* mind the uppercase A */
    return 0;
}

Skop Salah

Pengecam mesti diisytiharkan dalam skop yang sama di mana ia dirujuk. Sebagai contoh, dalam contoh ini, 'std::string' harus digunakan untuk mengisytiharkan kedua-dua 's1' dan 's2':

#include <string>

int main() {
    std::string s1 = "Hello"; // Correct.
    string s2 = "world"; // WRONG - would give error.
}

Gunakan Sebelum Pengisytiharan

Dalam sesetengah bahasa pengaturcaraan, seperti C , pengecam mesti diisytiharkan sebelum ia digunakan. Jika fungsi atau pembolehubah dirujuk sebelum pengisytiharannya, pengkompil akan menjana ralat 'pengecam yang tidak diisytiharkan'. Contohnya:

void f() { g(); }
void g() { }

Untuk membetulkan ralat ini, sama ada gerakkan takrifan 'g' sebelum 'f':

void g() { }
void f() { g(); }

Atau tambahkan pengisytiharan 'g' sebelum 'f ':

void g(); // declaration
void f() { g(); }
void g() { } // definition

stdafx.h tiada di Atas (Visual Studio-Specific)

Dalam Visual Studio, baris "#include "stdafx.h"" mestilah baris pertama kod untuk memproses fail pengepala lain dengan betul. Jika baris ini ditinggalkan atau tidak diletakkan di bahagian atas, pengkompil mungkin mengabaikan pengisytiharan berikutnya, yang membawa kepada ralat 'pengecam yang tidak diisytiharkan'. Contohnya:

#include <iostream>
#include "stdafx.h"

Dalam contoh ini, "#include " akan diabaikan dan kod itu akan gagal untuk disusun. Untuk menyelesaikan isu ini, alihkan "#include "stdafx.h"" ke bahagian atas fail:

#include "stdafx.h"
#include <iostream>

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Pengecam Tidak Diisytiharkan' dalam Kod Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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