ما هو ملف HPP؟
يُستخدم تنسيق الملف “.hpp” بشكل شائع لملفات الرأس في لغة برمجة C++. تحتوي ملفات الرأس عادةً على إعلانات وتعريفات للوظائف والفئات والمتغيرات والثوابت التي تستخدمها ملفات التعليمات البرمجية المصدر الأخرى في مشروع C++.
الغرض من استخدام ملفات الرأس هو توفير طريقة لمشاركة التعليمات البرمجية الشائعة عبر ملفات التعليمات البرمجية المصدر المتعددة دون تكرار التعليمات البرمجية نفسها. عندما يحتاج الملف المصدر C++ إلى الوصول إلى الإعلانات أو التعريفات من ملف الرأس, فإنه يتضمن ملف الرأس باستخدام توجيه المعالج المسبق #include
.
يُستخدم ملحق الملف “.hpp” غالبًا للإشارة إلى أن الملف هو ملف رأس C++. ليس من الضروري استخدام هذا الامتداد المحدد لملفات الرأس, وقد تصادف أيضًا ملفات رأس ذات امتداد “.h” أو ملحقات أخرى. إن اختيار التمديد هو إلى حد كبير مسألة اتفاقية وتفضيل شخصي.
عندما يتضمن ملف مصدر C++ ملف رأس باستخدام #include
, يجمع المترجم بشكل فعال محتوى ملف الرأس مع الملف المصدر قبل تجميعه كوحدة. يسمح هذا للملف المصدر بالوصول إلى الإعلانات والتعريفات في ملف الرأس, مما يوفر المعلومات اللازمة للمترجم لإجراء فحص النوع وإنشاء التعليمات البرمجية.
ماذا يحتوي ملف HPP؟
فيما يلي بعض المحتويات الشائعة التي قد تجدها في ملف “.hpp”:
- إعلانات الوظائف: غالبًا ما تتضمن ملفات الرأس إعلانات الوظائف دون تطبيقاتها الفعلية. توفر هذه الإعلانات معلومات حول اسم الوظيفة ونوع الإرجاع والمعلمات, مما يسمح لملفات التعليمات البرمجية المصدر الأخرى باستخدام الوظيفة دون الحاجة إلى معرفة تفاصيل التنفيذ.
- إعلانات الفئة: يمكن أن تحتوي ملفات الرأس على إعلانات فئة, بما في ذلك اسم الفئة ومتغيرات الأعضاء ووظائف الأعضاء ومحددات الوصول. من خلال تضمين إعلان الفئة في ملف الرأس, يمكن لملفات التعليمات البرمجية المصدر الأخرى إنشاء كائنات من تلك الفئة والوصول إلى أعضائها.
- التصريحات الثابتة: يمكن لملفات الرأس تعريف الثوابت, مثل المتغيرات العامة أو قيم التعداد التي من المفترض أن تتم مشاركتها عبر ملفات التعليمات البرمجية المصدر المتعددة. يمكن الوصول إلى هذه الثوابت عن طريق تضمين ملف الرأس في ملفات مصدر أخرى, مما يسمح لهم باستخدام الثوابت المحددة.
- تعريفات النوع: قد تحتوي ملفات الرأس على تعريفات أنواع باستخدام الكلمة الأساسية “typedef” أو أسماء مستعارة للكتابة باستخدام الكلمة الأساسية “استخدام”. تقوم هذه التعريفات بإنشاء أسماء جديدة للأنواع الموجودة, مما يجعل التعليمات البرمجية أكثر قابلية للقراءة والصيانة.
- تعريفات الوظائف المضمنة: في بعض الحالات, قد تحتوي ملفات الرأس على تعريفات الوظائف المضمنة. الوظائف المضمنة هي وظائف صغيرة يتم توسيعها في موقع الاتصال بدلاً من استدعائها كوظيفة منفصلة. يتيح تضمين تعريف الوظيفة المضمنة في ملف الرأس للمترجم استبدال استدعاء الوظيفة بنص الوظيفة مباشرة, مما قد يؤدي إلى تحسين الأداء.
مثال لملف HPP
#ifndef PERSON_HPP
#define PERSON_HPP
#include <string>
class Person {
private:
std::string name;
int age;
public:
Person();
Person(const std::string& name, int age);
void setName(const std::string& newName);
void setAge(int newAge);
std::string getName() const;
int getAge() const;
void printInfo() const;
};
#endif
ما هو تنسيق ملف HPP؟
HPP هو ملف نصي عادي ولكنه يتبع القواعد العامة وبناء جملة لغة البرمجة C++. فيما يلي تفصيل للتنسيق العام وبنية الملف “.hpp”:
- حراس الرأس: عادةً, يبدأ ملف “.hpp” بحرس الرأس لمنع تضمينات متعددة لنفس الملف. يتم تحقيق ذلك باستخدام توجيهات المعالج المسبق مثل
#ifndef
و#define
و#endif
. يضمن واقي الرأس تضمين محتويات الملف مرة واحدة فقط أثناء عملية التجميع. - تضمين البيانات: بعد حماية الرؤوس, يمكنك تضمين ملفات الرأس الضرورية الأخرى باستخدام التوجيه
#include
. قد تتضمن هذه الرؤوس القياسية للمكتبة أو الرؤوس المخصصة الأخرى التي يتطلبها الكود الخاص بك. - الإعلانات والتعريفات: المحتوى الأساسي لملف “.hpp” هو الإعلانات, وفي بعض الحالات, تعريفات الفئات والوظائف والثوابت وأسماء الأنواع المستعارة وعناصر أخرى. على سبيل المثال, يمكنك الإعلان عن الفئات باستخدام الكلمة الأساسية “class”, والوظائف باستخدام نوع الإرجاع والاسم وقائمة المعلمات, والثوابت باستخدام الكلمة الأساسية “const” متبوعة بنوعها واسمها.
- تعريفات الوظائف المضمنة: في بعض الحالات, يمكنك تضمين تعريفات الوظائف المضمنة مباشرة في ملف “.hpp”. عادةً ما يتم تعريف الوظائف المضمنة داخل نص الفئة, مما يعني أن تعريف الوظيفة يتم تضمينه بجانب إعلانها. يمكن القيام بذلك عن طريق بادئة تعريف الوظيفة بالكلمة الأساسية “المضمنة”.
- إعلانات مساحة الاسم: إذا كنت تستخدم مساحات الأسماء في التعليمات البرمجية الخاصة بك, فيمكنك الإعلان عنها داخل ملف “.hpp”. يتم ذلك باستخدام الكلمة الأساسية “مساحة الاسم” متبوعة باسم مساحة الاسم وإحاطة الكود ذي الصلة داخل كتلة مساحة الاسم.