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
Lepaskan: 2024-12-19 01:56:10
asal
137 orang telah melayarinya

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;
}
Salin selepas log masuk

Untuk menyelesaikan isu ini, masukkan fail pengepala:

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

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;
}
Salin selepas log masuk

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.
}
Salin selepas log masuk

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() { }
Salin selepas log masuk

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

void g() { }
void f() { g(); }
Salin selepas log masuk

Atau tambahkan pengisytiharan 'g' sebelum 'f ':

void g(); // declaration
void f() { g(); }
void g() { } // definition
Salin selepas log masuk

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"
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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