Berbilang Takrifan 'wat' dalam Projek C
Kod yang diberikan terdiri daripada empat fail: FileA.cpp, FileA.h, FileB.cpp dan FileB.h. Apabila disusun, ia menghadapi ralat yang menyatakan "berbilang takrifan `wat'".
FileB.h mentakrifkan pembolehubah integer bernama 'wat' seperti berikut:
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
Memandangkan fail pengepala ini disertakan dalam kedua-dua FileA.cpp dan FileB.cpp, pengkompil mengesan bahawa 'wat' ditakrifkan beberapa kali. Ini berlaku kerana makro FILEB_H_ tidak ditakrifkan dengan betul dalam semua fail pengepala.
Untuk menyelesaikan isu ini, fail pengepala harus diubah suai sebagai berikut:
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
FileB.h:
#ifndef FILEB_H_ #define FILEB_H_ extern int wat; // Declare 'wat' as external void world(); #endif /* FILEB_H_ */
FileB .cpp:
#include "FileB.h" int wat = 0; // Define 'wat' with its initial value void world() { // More code }
Dengan menggunakan 'luar' dalam FileB.h, kami memaklumkan pengkompil bahawa 'wat' ditakrifkan di tempat lain dan ia tidak sepatutnya mencari definisinya dalam fail semasa. Takrifan sebenar 'wat' kemudiannya disediakan dalam FileB.cpp, mengelakkan ralat takrifan berbilang.
Atas ialah kandungan terperinci Mengapa Kod C Saya Menghasilkan Ralat 'Berbilang Takrif `wat'', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!