Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

بناء وتجميع (Compilation) لغة C++

جزء من قسم Object Oriented Programming في رحلة C++ على Coddy — الدرس 2 من 104.

تتم عملية بناء C++ في ثلاث مراحل: المعالجة المسبقة (Preprocessing)، والتصريف (Compilation)، والربط (Linking).

1. المعالجة المسبقة — تتم معالجة توجيهات #include، حيث يتم نسخ محتويات الملفات الرأسية (header) إلى ملفات المصدر

#include <iostream>    // ملف رأسي للنظام
#include "my_file.h"   // الملف الرأسي الخاص بك

2. التجميع (Compilation) — يتم تجميع كل ملف .cpp بشكل مستقل إلى ملف كائن (.o)

// math_utils.cpp يتم تجميعه إلى math_utils.o
// main.cpp يتم تجميعه إلى main.o

3. الربط (Linking) — يتم دمج ملفات الكائنات (Object files) في الملف التنفيذي النهائي

// math_utils.o + main.o → program.exe

يعلن ملف الرأس (header file) عما هو موجود (النماذج الأولية). يوفر ملف .cpp التنفيذ الفعلي. يقوم الرابط (linker) بربط الاستدعاءات في main.cpp بالتنفيذات الموجودة في ملفات .cpp الأخرى.

challenge icon

التحدي

متوسط

يصرح ملف الرأس math_utils.h عن دالتين. قم بتنفيذهما في math_utils.cpp:

  • doubleValue(int x) — تعيد x * 2
  • square(int x) — تعيد x * x

تأكد من تضمين ملف الرأس في ملف .cpp الخاص بك.

ورقة مرجعية

تتم عملية بناء C++‎ في ثلاث مراحل: المعالجة المسبقة، والترجمة، والربط.

المعالجة المسبقة — يتم حل توجيهات #include، ونسخ محتويات الترويسة إلى ملفات المصدر:

#include <iostream>    // ترويسة النظام
#include "my_file.h"   // الترويسة الخاصة بك

الترجمة — يتم ترجمة كل ملف .cpp بشكل مستقل إلى ملف كائن (.o):

// يتم ترجمة math_utils.cpp إلى math_utils.o
// يتم ترجمة main.cpp إلى main.o

الربط — يتم دمج ملفات الكائنات في الملف التنفيذي النهائي:

// math_utils.o + main.o → program.exe

يصرح ملف الترويسة عما هو موجود (النماذج الأولية). ويوفر ملف .cpp التنفيذ الفعلي. يقوم الرابط بربط الاستدعاءات في main.cpp بالتنفيذات في ملفات .cpp الأخرى.

جرّب بنفسك

#include <iostream>
#include "math_utils.h"

int main() {
    int num;
    std::cin >> num;
    
    std::cout << "Double: " << doubleValue(num) << std::endl;
    std::cout << "Square: " << square(num) << std::endl;
    std::cout << "Build successful" << std::endl;
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming