Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Selesaikan ralat kompilasi C++: 'fungsi' tidak diisytiharkan dalam skop ini

Selesaikan ralat kompilasi C++: 'fungsi' tidak diisytiharkan dalam skop ini

WBOY
WBOYasal
2023-08-27 08:51:151568semak imbas

解决C++编译错误:'function' was not declared in this scope

Menyelesaikan ralat kompilasi C++: 'fungsi' tidak diisytiharkan dalam skop ini

Apabila pengaturcaraan dalam C++, kita sering menghadapi beberapa ralat kompilasi Salah satu ralat biasa ialah "'fungsi' tidak diisytiharkan dalam skop ini". Ralat ini bermakna bahawa program cuba menggunakan fungsi yang tidak diisytiharkan. Dalam artikel ini, saya akan menerangkan punca ralat ini dan memberikan beberapa penyelesaian.

Mula-mula, mari lihat contoh kod mudah:

#include <iostream>

int main() {
    sayHello(); // 调用一个未声明的函数
    return 0;
}

void sayHello() {
    std::cout << "Hello, World!" << std::endl;
}

Apabila kita cuba menyusun kod ini, pengkompil akan melaporkan ralat dan memaparkan "'sayHello' tidak diisytiharkan dalam skop ini". Ini kerana kami memanggil fungsi yang tidak diisytiharkan sayHello dalam fungsi utama.

Sebab ralat ini berlaku ialah pengkompil menghuraikan kod dalam susunan atas ke bawah. Sebelum kita memanggil fungsi sayHello, pengkompil tidak mengetahui kewujudan fungsi ini, jadi ralat akan dilaporkan.

Untuk menyelesaikan ralat ini, kita perlu mengisytiharkan fungsi sayHello sebelum fungsi utama. Anda boleh menambah prototaip fungsi sebelum fungsi utama:

#include <iostream>

void sayHello(); // 函数原型

int main() {
    sayHello(); // 调用函数
    return 0;
}

void sayHello() {
    std::cout << "Hello, World!" << std::endl;
}

Dalam kod di atas, kami menambah prototaip fungsi sebelum fungsi utama void sayHello();. Prototaip fungsi ini memberitahu pengkompil bahawa terdapat fungsi yang dipanggil sayHello sebelum fungsi utamanya adalah tidak sah dan tidak mempunyai parameter.

Sekarang pengkompil mengetahui kewujudan fungsi sayHello, kita boleh memanggilnya dalam fungsi utama. Susun semula kod kali ini ralat "'sayHello' tidak diisytiharkan dalam skop ini" seharusnya tidak muncul lagi.

Selain menambah prototaip fungsi, cara lain untuk menyelesaikan ralat ini adalah dengan mengalihkan definisi fungsi sebelum fungsi utama. Dengan cara ini, pengkompil akan melihat definisi fungsi sebelum menyusun fungsi utama.

#include <iostream>

void sayHello() {
    std::cout << "Hello, World!" << std::endl;
}

int main() {
    sayHello(); // 调用函数
    return 0;
}

Dalam kod di atas, kami mengalihkan definisi fungsi sebelum fungsi utama, supaya pengkompil akan melihat definisi fungsi sayHello dahulu dan tidak lagi melaporkan ralat.

Untuk meringkaskan, apabila ralat "'fungsi' tidak diisytiharkan dalam skop ini" berlaku, kita perlu mengisytiharkan atau mentakrifkan fungsi tersebut sebelum memanggilnya. Ralat ini boleh diselesaikan dengan menambah prototaip fungsi atau mengalihkan definisi fungsi sebelum memanggil fungsi. Dengan cara ini, pengkompil akan mengetahui kewujudan fungsi dan tidak akan melaporkan ralat. Semoga artikel ini membantu dalam menyelesaikan ralat kompilasi C++.

Atas ialah kandungan terperinci Selesaikan ralat kompilasi C++: 'fungsi' tidak diisytiharkan dalam skop ini. 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