تخطَّ إلى المحتوى

🇨 شرح لغة C

تنظيم البرنامج عبر ملفات متعددة

الدرس 25 من 29· ⏱ 1 دقائق قراءة

ليش نقسّم البرنامج؟

برنامج واحد بملف .c ضخم صعب القراءة والصيانة. القسمة الشائعة: ملف .h يحتوي الإعلانات (ماذا يوجد)، وملف .c يحتوي التعريفات (كيف يعمل).

ملف الرأس (Header)

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int square(int x);   // إعلان فقط، بدون جسم الدالة

#endif

الحراسة #ifndef / #define / #endif تمنع تضمين نفس الملف مرّتين لو استورده أكثر من ملف .c في نفس الترجمة.

ملف التنفيذ

// math_utils.c
#include "math_utils.h"

int square(int x) {
    return x * x;
}

الاستخدام من main

// main.c
#include <stdio.h>
#include "math_utils.h"   // اقتباسات لملفاتك، أقواس <> لمكتبات النظام

int main(void) {
    printf("%d\n", square(4));   // 16
    return 0;
}

الترجمة بأكثر من ملف

gcc main.c math_utils.c -o program
./program

gcc يترجم كل ملف .c على حدة (بفضل الإعلان في الهيدر يعرف كل ملف توقيع الدوال الأخرى)، ثم يربطها معًا في ملف تنفيذي واحد.

💡 الهيدر يحتوي إعلانات فقط (توقيع دوال، struct، typedef). ضع تعريف الدالة الفعلي في ملف .c دائمًا، وإلا تحصل على خطأ ربط عند تضمين الهيدر بأكثر من ملف.

أخطاء شائعة

  • نسيان حراسة التضمين (#ifndef) فيحدث تعريف مكرّر عند تضمين الهيدر مرّتين.
  • وضع تعريف دالة كامل (لا إعلان فقط) داخل ملف .h.
  • نسيان تمرير كل ملفات .c لأمر gcc عند الترجمة.

🎯 التالي: معاملات سطر الأوامر.

شرح تنظيم البرنامج عبر ملفات متعددة — لغة C بالعربي
تنظيم البرنامج عبر ملفات متعددةلغة C بالعربي · The Code Fix

📚 لمزيد من التعمّق في لغة C، راجِع مرجع لغة C الرسمي.

هل كان هذا الدرس مفيدًا؟