English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ملفات الرؤوس هي امتدادها .h الملف، الذي يحتوي على إعلانات الدوال والمكتبات، ويتم استدعاؤه من قبل ملفات المصدر المختلفة. هناك نوعان من ملفات الرؤوس: ملفات الرؤوس التي يكتبها المبرمجون وملفات الرؤوس التي يقدمها معالج التجميع.
للإستخدام ملفات الرؤوس في البرنامج، يجب استخدام أوامر معالج التجميع C #include للاستدعاء. لقد شاهدنا من قبل stdio.h ملفات الرؤوس، وهي ملفات الرؤوس التي يقدمها معالج التجميع.
استدعاء ملفات الرؤوس يشبه نسخ محتوياتها، ولكننا لن نقوم بنسخ محتويات ملفات الرؤوس مباشرة في ملفات المصدر، لأن هذا يمكن أن يؤدي إلى أخطاء، خاصة عندما يكون البرنامج مكونًا من عدة ملفات مصدر.
تطبيق بسيط في C أو C++ البرمجيات، يُنصح بوضع جميع المعلمات الثابتة والمكتبات والمتغيرات العالمية للنظام والنماذج البرمجية في ملفات الرؤوس، واستدعاء هذه الملفات عند الحاجة.
نص استدلال ملف الرأس #include استخدام تعليمات المعالج المسبق
يمكن استدلال على ملفات الرأس المخصصة والنظامية. تتضمن أشكالها كما يلي:
#include <file>
يستخدم هذا الشكل لاستدلال ملفات الرأس النظامية. يبحث المسبق المعالج في القائمة المعيارية للدلائل النظامية عن الملف المسمى file. يمكنك وضع الدليل في مقدمة القائمة باستخدام خيار -I عند تجميع الكود.
#include "file"
#include عمليات استدلال ملف الرأس #include التعليمات ستجعل مسبق المعالج يتصفح الملف المحدد كإدخال. تتضمن输ود المسبق المعالج الناتج المُنتج، الناتج المُنتج من الملف المُدرج، والـ
char *test(void);
وبرنامج رئيسي يستخدم ملف الرأس program.c، مثلما هو موضح أدناه:
int x; #include "header.h" int main(void) { puts(test()); }
سيشاهد المعالج التجميع المعلومات التالية للكود:
int x; char *test(void); int main(void) { puts(test()); }
إذا تم استدلال ملف الرأس مرتين، سيقوم المعالج بتشغيل محتوى الملف مرتين، مما يؤدي إلى خطأ. لمنع هذا، يتم عادة وضع محتوى الملف كله داخل جملة التجميع المشروطة، مثلما هو موضح أدناه:
#ifndef HEADER_FILE #define HEADER_FILE الكامل ملف الرأس ملف #endif
هذه الهيكلية هي ما يُسمى عادة بالطرف المساعد #ifndefعندما يتم تكرار الاستدلال على ملف الرأس مرة أخرى، تكون الشروط خطأ لأن HEADER_FILE تم تعريفه. في هذه الحالة، سيقوم المسبق المعالج بتجاوز محتوى الملف كله، وسيقوم معالج التجميع بتجاهل ذلك.
في بعض الأحيان، قد تحتاج إلى اختيار ملف رأس من عدة ملفات رأس مختلفة لإدراجه في البرنامج. على سبيل المثال، قد تحتاج إلى تحديد معلمات التكوين المختلفة للنظام على مختلف أنظمة التشغيل. يمكنك تحقيق ذلك من خلال سلسلة من الشروط، مثلما هو موضح أدناه:
#if SYSTEM_1 # include "system_1.h" #elif SYSTEM_2 # include "system_2.h" #elif SYSTEM_3 ... #endif
لكن عندما يكون هناك الكثير من ملفات الرأس، هذا السلوك غير مناسب، يستخدم المسبق المعالج الماكرو لتعريف اسم ملف الرأس. هذا هو ما يُسمى بـالاستدلال المشروطليس باستخدام اسم ملف الرأس كـ #include المعادلة المباشرة، يجب عليك فقط استخدام اسم الماكرو بدلاً من ذلك:
#define SYSTEM_H "system_1.h" ... #include SYSTEM_H
سيتم توسيع SYSTEM_H، وسيبحث المعالج المسبق عن system_1.h، مثل #include كما تم كتابته في البداية. يمكن تعريف SYSTEM_H عبر خيار -D في Makefile الخاص بك.