Dalam pengaturcaraan C++, ralat kompilasi "definisi berbilang" sering berlaku. Ini kerana berbilang pembolehubah, fungsi atau objek dengan nama yang sama ditakrifkan dalam atur cara. Pembolehubah, fungsi atau objek ini semuanya dianggap sama oleh pengkompil, jadi pengkompil akan menjana ralat "takrifan berbilang".
Dalam pengaturcaraan sebenar, bagaimana kita harus mengelak dan menyelesaikan masalah sedemikian?
Dalam C++, kita boleh menentukan beberapa fungsi atau pembolehubah yang digunakan semula dalam fail pengepala, supaya kita boleh mengelak daripada mentakrifkan fungsi atau pembolehubah yang sama berulang kali dalam berbilang fail. Apabila menggunakan fungsi atau pembolehubah ini, kita hanya perlu memasukkan fail pengepala.
Contoh kod:
//header.h
int add(int a, int b);
/
sumber "c.ppp" int add(int a, int b){return a + b;
rreee
}Dalam C++, kita boleh menggunakan kata kunci "statik" untuk menandakan pembolehubah atau fungsi sebagai "statik" untuk mengelakkan definisi pendua dalam berbilang fail.
Contoh kod:
statik int num;
static int num;
Dalam C++, kita boleh menggunakan ruang nama untuk mengelakkan definisi berulang pembolehubah, fungsi atau objek.
Contoh kod:
ruang nama A{
return a - b;
}
ruang nama A{
int num;
}
Kita sama dalam dua fail sumber ini, ruang nama "A" ditakrifkan, dan pembolehubah "num" yang sama ditakrifkan dalam ruang nama itu. Memandangkan ruang nama menyelesaikan masalah konflik penamaan, pengkompil tidak akan melaporkan ralat "takrifan berbilang".
🎜Ringkasnya, kita boleh mengelakkan definisi berulang pembolehubah, fungsi atau objek dengan menggunakan fail pengepala, kata kunci statik dan ruang nama. Dalam pembangunan sebenar, kita harus memilih kaedah yang sesuai mengikut keperluan dan mematuhi piawaian pengekodan tertentu, supaya dapat mengurangkan ralat penyusunan dan masa penyahpepijatan sebanyak mungkin. 🎜Atas ialah kandungan terperinci Ralat kompilasi C++: pelbagai definisi, bagaimana untuk mengubah suainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!