Bagaimana untuk menyelesaikan ralat kompilasi C++: 'rujukan tidak ditentukan kepada 'fungsi'?

WBOY
Lepaskan: 2023-08-27 08:15:41
asal
1590 orang telah melayarinya

解决C++编译错误:'undefined reference to 'function'',如何解决?

Selesaikan ralat kompilasi C++: 'rujukan tidak ditentukan kepada 'fungsi', bagaimana untuk menyelesaikannya?

1. Penerangan masalah
Dalam proses pengaturcaraan dalam C++, kita sering menghadapi ralat kompilasi Salah satu ralat yang biasa ialah "rujukan yang tidak ditentukan kepada 'fungsi' ini bermaksud bahawa rujukan kepada fungsi tertentu tidak ditentukan. Ralat ini biasanya berlaku semasa fasa pemautan, apabila pengkompil tidak dapat mencari definisi fungsi, menyebabkan kompilasi gagal.

2. Punca ralat

  1. Tiada definisi fungsi: Mungkin definisi fungsi tidak disediakan dalam atur cara, atau definisi fungsi tidak disertakan dengan betul dalam atur cara.
  2. Ralat pengisytiharan fungsi: Pengisytiharan fungsi tidak konsisten dengan takrifan sebenar, atau fungsi diisytiharkan di lokasi yang salah.

3 Penyelesaian
Atas sebab ralat di atas, berikut adalah beberapa penyelesaian biasa.

  1. Tiada definisi fungsi
    Untuk situasi ini, penyelesaiannya mudah, cuma berikan definisi fungsi di tempat yang sesuai dalam program. Katakan kita mempunyai pengisytiharan fungsi berikut:
// function.h
int sum(int a, int b);
Salin selepas log masuk
// main.cpp
#include "function.h"

int main() {
    int result = sum(1, 2);
    return 0;
}
Salin selepas log masuk

Dalam kod di atas, kami hanya menyediakan pengisytiharan fungsi, tetapi bukan definisi fungsi. Untuk menyelesaikan masalah ini, kita perlu menyediakan definisi fungsi di tempat yang sesuai:

// function.cpp
int sum(int a, int b) {
    return a + b;
}
Salin selepas log masuk

Dengan cara ini, pada masa penyusunan, pengkompil boleh mencari definisi sebenar fungsi, dengan itu menyelesaikan "rujukan tidak ditentukan kepada 'fungsi' "kesilapan.

  1. Ralat pengisytiharan fungsi
    Untuk ralat pengisytiharan fungsi, ia mungkin disebabkan oleh ketidakkonsistenan antara pengisytiharan fungsi dan definisi sebenar. Cara untuk menyelesaikan masalah ini adalah dengan memeriksa sama ada pengisytiharan dan definisi fungsi adalah konsisten, termasuk jenis parameter, bilangan parameter, nilai pulangan fungsi, dsb.

Pertimbangkan contoh kod berikut:

// function.h
float sum(int a, int b); // 函数声明
Salin selepas log masuk
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, pengisytiharan dan jenis nilai pulangan yang ditentukan bagi fungsi adalah tidak konsisten, satu diisytiharkan sebagai jenis apungan, dan satu lagi ditakrifkan sebagai jenis int. Ini akan menyebabkan pengkompil tidak dapat memadankan rujukan dan definisi fungsi dengan betul, mengakibatkan ralat "rujukan tidak ditentukan kepada 'fungsi'".

Untuk menyelesaikan masalah ini, kita hanya perlu memastikan pengisytiharan fungsi konsisten dengan jenis nilai pulangan yang ditentukan:

// function.h
int sum(int a, int b); // 函数声明
Salin selepas log masuk
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}
Salin selepas log masuk
Salin selepas log masuk

Dengan cara ini, pengkompil boleh memadankan rujukan dan definisi fungsi dengan betul, menyelesaikan masalah daripada ralat "rujukan tidak ditentukan kepada 'fungsi'".

4. Ringkasan
Dalam pengaturcaraan C++, ralat kompilasi tidak asing lagi bagi kita. Salah satu ralat biasa ialah "rujukan tidak ditentukan kepada 'fungsi'", yang bermaksud bahawa rujukan kepada fungsi tidak mempunyai definisi ditemui. Untuk menyelesaikan masalah ini, kita perlu memberi perhatian kepada sama ada definisi fungsi disediakan, dan sama ada pengisytiharan fungsi itu konsisten dengan definisinya. Masalah ini boleh diselesaikan dengan mudah dengan memberikan definisi fungsi dengan betul dan memastikan pengisytiharan fungsi konsisten dengan definisi.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat kompilasi C++: 'rujukan tidak ditentukan kepada 'fungsi'?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!