Apabila menulis atur cara dalam C++, kita mungkin menghadapi ralat kompilasi Salah satu ralat biasa ialah "Pengkompil tidak menyokong pelbagai takrifan jenis yang berbeza". Ralat ini biasanya melibatkan berbilang pembolehubah atau fungsi yang ditakrifkan dalam fail yang berbeza atau di lokasi yang berbeza dalam fail yang sama, dan jenisnya tidak sepadan, menyebabkan pengkompil tidak dapat menentukan definisi yang hendak digunakan. Artikel ini akan menerangkan punca dan penyelesaian ralat ini.
1. Punca ralat
Dalam C++, pembolehubah atau fungsi boleh ditakrifkan dalam fail yang berbeza atau di lokasi yang berbeza dalam fail yang sama. Apabila berbilang definisi hadir, pengkompil mesti menentukan yang mana satu untuk digunakan. Jika berbilang takrifan mempunyai jenis yang berbeza, pengkompil tidak dapat menentukan takrifan yang hendak digunakan dan akan melaporkan ralat.
Sebagai contoh, pembolehubah bernama x dan fungsi bernama y ditakrifkan dalam atur cara:
// file1.cpp int x = 1; // file2.cpp double y() { return 2.0; }
Dalam contoh ini, jenis x ialah int, dan jenis y ialah dua kali ganda. Semasa penyusunan, jika file1.cpp dan file2.cpp disertakan pada masa yang sama, pengkompil akan melaporkan ralat "Pengkompil tidak menyokong berbilang takrifan dengan jenis yang berbeza".
2. Penyelesaian
Untuk menyelesaikan masalah ini, kita perlu menggunakan kata kunci extern untuk mengisytiharkan pembolehubah atau fungsi ini supaya ia boleh digunakan dalam fail lain.
Dalam file1.cpp, anda perlu mengisytiharkan fungsi y menggunakan extern supaya pengkompil mengetahui bahawa fungsi y ditakrifkan dalam fail lain dan boleh menghuraikan jenis pemulangan fungsi y dengan betul. Begitu juga, dalam file2.cpp, pembolehubah x perlu diisytiharkan menggunakan extern. Kod yang diubah suai kelihatan seperti ini:
// file1.cpp extern double y(); int x = 1; // file2.cpp extern int x; double y() { return 2.0; }
Dalam contoh ini, kata kunci luaran digunakan untuk memberitahu pengkompil bahawa pembolehubah atau fungsi ini ditakrifkan dalam fail lain. Dengan cara ini, pada masa penyusunan, pengkompil boleh menyelesaikan jenisnya dengan betul, sekali gus mengelakkan ralat "Pengkompil tidak menyokong pelbagai definisi dengan jenis yang berbeza".
3. Ringkasan
Dalam C++, apabila berbilang definisi muncul, jika jenis yang ditakrifkan berbeza, pengkompil akan melaporkan ralat "Pengkompil tidak menyokong pelbagai definisi dengan jenis yang berbeza". Untuk menyelesaikan masalah ini, kita perlu mengisytiharkan pembolehubah atau fungsi ini menggunakan kata kunci luaran supaya kita boleh menggunakannya dalam fail lain. Dengan cara ini, pada masa penyusunan, pengkompil boleh menyelesaikan jenisnya dengan betul, dengan itu mengelakkan ralat.
Atas ialah kandungan terperinci Ralat penyusunan C++: Pengkompil tidak menyokong pelbagai definisi dengan jenis yang berbeza Bagaimana untuk menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!