Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat kompilasi C++: Jenis pemulangan fungsi tidak sepadan dengan jenis pemulangan yang diisytiharkan oleh fungsi Bagaimana untuk menyelesaikannya?

Ralat kompilasi C++: Jenis pemulangan fungsi tidak sepadan dengan jenis pemulangan yang diisytiharkan oleh fungsi Bagaimana untuk menyelesaikannya?

WBOY
WBOYasal
2023-08-21 21:45:052662semak imbas

Dalam pengaturcaraan C++, ia adalah ralat kompilasi biasa bahawa jenis pemulangan fungsi tidak sepadan dengan jenis pemulangan perisytiharan fungsi. Ralat ini biasanya berlaku kerana pembangun mempunyai beberapa ketidakkonsistenan dalam proses pengisytiharan dan definisi fungsi, seperti ketidakpadanan jenis pemulangan fungsi, nombor parameter atau ketidakpadanan jenis, dsb. Ralat ini sering menyebabkan program gagal untuk menyusun atau berjalan dengan betul, menyebabkan masalah yang besar dalam pembangunan dan penyelenggaraan program.

Jadi, mengapa ralat kompilasi berlaku jika jenis pemulangan fungsi tidak sepadan dengan jenis pemulangan yang diisytiharkan oleh fungsi itu? Ini kerana pengkompil C++ menentukan jenis pemulangan fungsi berdasarkan pengisytiharan fungsi Jika jenis pemulangan fungsi tidak konsisten dengan jenis yang diisytiharkan, pengkompil tidak boleh menentukan jenis pemulangan fungsi, mengakibatkan ralat kompilasi. Oleh itu, untuk menyelesaikan ralat ini, kita perlu mempertimbangkan dua aspek berikut:

  1. Semak sama ada jenis pulangan dalam pengisytiharan dan definisi fungsi adalah konsisten

Apabila jenis pulangan dalam pengisytiharan dan definisi fungsi tidak konsisten, pengkompil akan membuang ralat. Oleh itu, apabila menyelesaikan ralat jenis ini, kita perlu menyemak sama ada jenis pulangan dalam pengisytiharan dan definisi fungsi adalah konsisten. Jika ia tidak konsisten, kita perlu mengubah suai jenis pulangan dalam definisi fungsi untuk menjadikannya sama dengan jenis pulangan dalam pengisytiharan.

Sebagai contoh, dalam kod berikut, jenis pemulangan pengisytiharan fungsi ialah int, tetapi jenis pemulangan dalam definisi fungsi adalah tidak sah, yang akan menyebabkan ralat penyusunan:

// 函数声明
int add(int a, int b);

// 函数定义
void add(int a, int b) {
    int c = a + b;
    return c;
}

Takrifan fungsi yang betul hendaklah seperti ini:

int add(int a, int b) {
    int c = a + b;
    return c;
}
  1. Semak fungsi Adakah penyata pulangan dan jenis nilai pulangan konsisten Selain jenis pemulangan yang tidak sepadan, pengkompil juga akan membuang ralat jika penyataan pemulangan fungsi dan jenis nilai pulangan tidak konsisten. Oleh itu, apabila menyelesaikan ralat ini, kita perlu menyemak sama ada penyata pulangan dan jenis nilai pulangan fungsi adalah konsisten. Jika ia tidak konsisten, kita perlu mengubah suai penyata pulangan atau jenis nilai pulangan untuk menjadikannya konsisten.
Sebagai contoh, dalam kod berikut, jenis nilai pulangan fungsi adalah int, tetapi pernyataan pulangan mengembalikan nilai jenis char, yang juga akan menyebabkan ralat penyusunan:

int get_value() {
    char ch = 'A';
    return ch;
}

Pelaksanaan fungsi yang betul sepatutnya seperti ini :

int get_value() {
    int i = 10;
    return i;
}

Ringkasnya, apabila kita menghadapi ralat kompilasi di mana jenis pemulangan fungsi tidak sepadan dengan jenis pemulangan perisytiharan fungsi, mula-mula kita perlu menyemak sama ada jenis pemulangan dalam perisytiharan dan definisi fungsi adalah konsisten. Jika ia konsisten tetapi masih terdapat ralat, anda perlu menyemak sama ada penyata pulangan dan jenis nilai pulangan fungsi adalah konsisten. Hanya apabila kedua-duanya sepadan, pengkompil boleh menentukan jenis pemulangan fungsi dengan betul, supaya keseluruhan program boleh menyusun dan berjalan dengan lancar.

Atas ialah kandungan terperinci Ralat kompilasi C++: Jenis pemulangan fungsi tidak sepadan dengan jenis pemulangan yang diisytiharkan oleh fungsi Bagaimana untuk menyelesaikannya?. 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