ไฟล์ HH คืออะไร??
ไฟล์ที่มีนามสกุล .hh คือไฟล์ส่วนหัวของ C++ ที่มีการประกาศตัวแปร ค่าคงที่ และฟังก์ชันต่างๆ การประกาศเหล่านี้ใช้โดยไฟล์การใช้งาน C++ ที่สอดคล้องกัน ซึ่งโดยปกติจะบันทึกเป็นไฟล์ .cpp ที่มีการใช้งานจริงของตรรกะผู้ใช้ ไฟล์ส่วนหัว .hh ถูกอ้างอิงในไฟล์ CPP การใช้งานโดยใช้คำสั่ง #include
คุณสามารถเพิ่มไฟล์ส่วนหัวให้กับโปรเจ็กต์ C++ ของคุณให้ได้มากที่สุดเพื่อรวมการประกาศระดับโปรเจ็กต์
รูปแบบไฟล์ .HH
ไฟล์ .hh เป็นไฟล์ข้อความธรรมดาที่สร้างขึ้นโดยคำนึงถึงกฎการกำหนดไฟล์ส่วนหัว ข้อมูลทั่วไปส่วนใหญ่ที่ประกาศในไฟล์ .hh มีดังต่อไปนี้
Variables
- ในกรณีของ Object Oriented Programming (OOP) ไฟล์ส่วนหัวของคลาสประกอบด้วยคำจำกัดความของตัวแปรระดับคลาสทั้งหมดที่สามารถเข้าถึงได้จากไฟล์ซอร์สโค้ดการใช้งาน
การประกาศเมธอด
- การประกาศเมธอดทั้งหมดจะรวมอยู่ในไฟล์ส่วนหัว .h เพื่อให้เข้าถึงได้จากไฟล์การใช้งานหลายไฟล์
Non-Inline Function Definitions
- ไฟล์ส่วนหัวสามารถมีคำจำกัดความของเมธอดที่ไม่ใช่ในบรรทัดได้
แมปข้อความ
- ไฟล์ส่วนหัวยังสามารถมีแมปข้อความในกรณีที่ใช้ซอร์สโค้ด MFC ในกรณีดังกล่าว แมปข้อความจะเชื่อมโยงกับการใช้งานฟังก์ชันซึ่งเชื่อมโยงกับองค์ประกอบ UI เช่น ปุ่ม ช่องทำเครื่องหมาย ปุ่มตัวเลือก เป็นต้น
ความแตกต่างระหว่างไฟล์ .H และ .HH
เห็นได้ชัดว่าไม่มีความแตกต่างระหว่างไฟล์ส่วนหัว .h และ .hh นอกเหนือจากวิธีการใช้งานที่แนะนำสำหรับภาษาที่เกี่ยวข้อง เช่น C หรือ C++ การตั้งชื่อไฟล์ส่วนหัวของคุณตามภาษาเหล่านี้ช่วยให้คุณแยกความแตกต่างระหว่างสิ่งเหล่านี้ในโครงการขนาดใหญ่ที่อาจเป็นการผสมระหว่างการใช้งาน C และ C++
นอกจากนี้ หากส่วนหัวถูกคั่นด้วยส่วนขยาย ตัวแก้ไขของคุณสามารถใช้การจัดรูปแบบที่เหมาะสมได้โดยอัตโนมัติตามลำดับ
โดยรวมแล้ว ความแตกต่างของรูปแบบไฟล์ทั้งสองนี้จะไม่ส่งผลเสียใดๆ แต่จะเป็นประโยชน์ และขอแนะนำให้ปฏิบัติตามสำหรับความแตกต่างของ C และ C++
เฮดเดอร์การ์ด
ไฟล์ส่วนหัวสามารถทำให้เกิดข้อผิดพลาดที่ซับซ้อนซึ่งการประกาศหลายรายการรวมอยู่ในไฟล์เดียวกันอันเป็นผลมาจากการเพิ่มไฟล์ส่วนหัวอื่นๆ คำจำกัดความที่ซ้ำกันนี้ทำให้เกิดข้อผิดพลาดของคอมไพเลอร์ สถานการณ์ที่เป็นปัญหานี้สามารถหลีกเลี่ยงได้ผ่านกลไกที่เรียกว่า header guard ซึ่งเป็นคำสั่งการรวบรวมแบบมีเงื่อนไขดังที่แสดงด้านล่าง
#ifndef ANY_UNIQUE_NAME_HERE_HPP
#define ANY_UNIQUE_NAME_HERE_HPP
// your declarations (and certain types of definitions) here
#endif
ด้วยส่วนหัวนี้ ตัวประมวลผลล่วงหน้าจะตรวจสอบว่า ANY_UNIQUE_NAME_HERE_HPP
ถูกกำหนดไว้แล้วหรือไม่ หากรวมส่วนหัวไว้ในไฟล์เดียวกันซ้ำๆ เนื้อหาของส่วนหัวจะถูกละเว้น