Berbilang Takrifan Pembolehubah dalam C
Apabila bekerja dengan berbilang fail dalam projek C, anda boleh menghadapi ralat yang berkaitan dengan pelbagai definisi pembolehubah . Pertimbangkan situasi berikut:
FileA.cpp:
#include "FileA.h" int main() { hello(); return 0; } void hello() { //code here }
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
FileB.cpp:
#include "FileB.h" void world() { //more code; }
FileB.h:
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
Setelah cuba menyusun ini kod, anda mungkin menghadapi ralat menyatakan "takrif berbilang `wat'."
Penjelasan:
Ralat timbul kerana anda telah menentukan pembolehubah global, wat, dua kali dalam unit kompilasi anda. Kedua-dua FileA.h dan FileB.h menyertakan pengisytiharan wat, mentakrifkannya dua kali dalam skop global.
Penyelesaian:
Untuk menyelesaikan isu ini, ikut perkara ini langkah:
FileB.h:
extern int wat;
FileB.cpp:
int wat = 0;
Dengan menggunakan extern in FileB.h, anda memaklumkan pengkompil bahawa pembolehubah bernama wat wujud di tempat lain. Dalam kes ini, anda mentakrifkan pembolehubah sebenar dengan pemula dalam FileB.cpp.
Pendekatan ini memastikan wat diisytiharkan sekali dalam skop global, menghapuskan ralat takrifan berbilang.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Berbilang Takrifan Pembolehubah' dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!