Pengepala Termasuk Satu Sama Lain dalam C
Fail pengepala C boleh merangkumi satu sama lain, tetapi garis panduan tertentu mesti dipatuhi untuk mengelakkan ralat penyusunan.
Sertakan Peletakan Penyata
Pengisytiharan Hadapan
Pertimbangkan kod berikut di mana dua kelas, A dan B, merangkumi satu sama lain:
<code class="cpp">// A.h #ifndef A_H_ #define A_H_ #include "B.h" class A { public: A() : b(*this) {} private: B b; }; #endif</code>
<code class="cpp">// B.h #ifndef B_H_ #define B_H_ #include "A.h" class B { public: B(A& a) : a(a) {} private: A& a; }; #endif</code>
Dalam senario ini, pengkompil menemui kelas B terlebih dahulu, tetapi A masih belum diisytiharkan. Untuk menyelesaikan masalah ini, pengisytiharan hadapan A hendaklah disertakan sebelum takrifan B:
<code class="cpp">// B.h #ifndef B_H_ #define B_H_ class A; // Forward declaration of class A #include "A.h" class B { public: B(A& a) : a(a) {} private: A& a; }; #endif</code>
Pengisytiharan hadapan ini memaklumkan pengkompil bahawa A ialah kelas, walaupun takrifan lengkapnya masih belum tersedia.
Dalam Amalan
Secara amnya, #include kenyataan harus diletakkan di dalam termasuk pengawal, dan pengisytiharan hadapan harus digunakan apabila pengepala perlu merujuk kepada kelas yang ditakrifkan dalam pengepala yang disertakan kemudian. Dengan mengikuti garis panduan ini, anda boleh mengelakkan ralat kompilasi yang disebabkan oleh pekeliling termasuk.
Atas ialah kandungan terperinci Bagaimanakah Kemasukan Tajuk Pekeliling Boleh Dielakkan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!