ما هو ملف HH؟
الملف ذو الامتداد .hh هو ملف رأس C ++ يتضمن تعريف المتغيرات والثوابت والوظائف. يتم استخدام هذه التعريفات بواسطة ملفات تنفيذ C ++ المقابلة ، وعادةً ما يتم حفظها كملفات .cpp تحتوي على التنفيذ الفعلي لمنطق المستخدم. تتم الإشارة إلى ملفات الرأس .hh في ملفات CPP الخاصة بالتنفيذ باستخدام التوجيه # include
. يمكنك إضافة أكبر عدد ممكن من ملفات الرأس إلى مشروع C ++ الخاص بك لتضمين إعلانات مستوى المشروع.
تنسيق ملف HH
ملف .hh هو ملف نصي عادي يتم إنشاؤه مع مراعاة قواعد تعريف ملف الرأس. تتضمن المعلومات الأكثر شيوعًا المعلنة في ملف .hh ما يلي.
** المتغيرات
** - في حالة البرمجة الموجهة للكائنات (OOP) ، يحتوي ملف رأس الفئة على تعريفات لجميع متغيرات مستوى الفئة التي يمكن الوصول إليها عبر ملفات التعليمات البرمجية المصدر للتنفيذ
** “إعلان الطرق” ** - يتم تضمين كافة إقرارات الطرق في ملفات الرأس .h ليتم الوصول إليها عبر ملفات تنفيذ متعددة.
** تعريفات الوظائف غير المضمنة
** - يمكن أن تحتوي ملفات الرأس أيضًا على تعريفات للطرق غير المضمنة.
** “خرائط الرسائل” ** - يمكن أن يحتوي ملف الرأس أيضًا على خرائط رسائل في حالة تنفيذ رمز مصدر MFC. في مثل هذه الحالة ، ترتبط خرائط الرسائل بتنفيذ الوظائف المرتبط بعناصر واجهة المستخدم مثل الزر ومربع الاختيار وأزرار الاختيار وما إلى ذلك.
الفرق بين ملفات H و
على ما يبدو ، لا يوجد اختلاف بين ملفات الرأس .h و. تساعدك تسمية ملفات الرأس وفقًا لهذه اللغات على التمييز بينها في مشروع كبير يمكن أن يكون مزيجًا من تطبيقات 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
قد تم تعريفه بالفعل. إذا تم تضمين الرأس بشكل متكرر في نفس الملف ، فسيتم تجاهل محتويات الرأس.