Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Pengecam Tidak Diisytiharkan' dalam Kod Saya?
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 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: 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': 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: Untuk membetulkan ralat ini, sama ada gerakkan takrifan 'g' sebelum 'f': Atau tambahkan pengisytiharan 'g' sebelum 'f ': 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: Dalam contoh ini, "#include 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!#include
int main() {
int aComplicatedName;
AComplicatedName = 1; /* mind the uppercase A */
return 0;
}
#include <string>
int main() {
std::string s1 = "Hello"; // Correct.
string s2 = "world"; // WRONG - would give error.
}
void f() { g(); }
void g() { }
void g() { }
void f() { g(); }
void g(); // declaration
void f() { g(); }
void g() { } // definition
#include <iostream>
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>