C: إعداد بيئة التطوير

إعداد بيئة التطوير أشبه بتجهيز المطبخ — حين يكون الموقد (المترجم) والأدوات (المحرّر) في مكانهم، يمكنك أخيرًا البدء بالطبخ (كتابة الشفرة).

1. تثبيت مترجم GCC

GCC (GNU Compiler Collection) هو أشهر مترجم للغة C — مجاني ويعمل على جميع المنصات. تحتاج إلى تثبيته قبل أن تتمكن من ترجمة شفرة C إلى برنامج تنفيذي.

(1) التثبيت على Windows

على Windows، نوصي بتثبيت MinGW-w64 أو MSYS2، وكلاهما يوفّر نسخة من GCC لنظام Windows.

الخيار 1: MinGW-w64 (موصى به للمبتدئين)

  1. زر https://www.mingw-w64.org ونزّل المثبّت
  2. أثناء التثبيت، اختر بنية x86_64 ونموذج المسارات win32
  3. أضف مجلد bin في مسار التثبيت إلى متغير البيئة PATH في النظام

الخيار 2: MSYS2 (أكثر مرونة)

BASH
pacman -S mingw-w64-x86_64-gcc

بعد التثبيت، افتح موجه الأوامر وتحقق:

BASH
gcc --version

إذا رأيت رقم إصدار، فقد نجح التثبيت.

(2) التثبيت على macOS

لا يأتي macOS مع GCC، لكن يمكنك تثبيته عبر Homebrew:

BASH
brew install gcc

أمر cc المدمج في macOS يستدعي فعليًا مترجم Clang، الذي يمكنه أيضًا ترجمة شفرة C. للتأكد:

BASH
cc --version

(3) التثبيت على Linux

معظم توزيعات لينكس تتيح لك تثبيت GCC مباشرة عبر مدير الحزم:

BASH
sudo apt install gcc

تحقّق من التثبيت:

BASH
gcc --version
💡 نصيحة: كل من Clang على macOS و GCC على Linux يمكنهما ترجمة شفرة C القياسية. للمبتدئين لا يوجد فرق عمليًا. يستخدم هذا الكتاب أمر gcc طوال الوقت.


2. ضبط VS Code

VS Code هو محرّر أكواد مجاني من Microsoft — خفيف وغني بالامتدادات، ما يجعله خيارًا ممتازًا لكتابة شفرة C.

(1) تثبيت VS Code

اذهب إلى https://code.visualstudio.com للتنزيل والتثبيت.

(2) تثبيت الامتدادات الأساسية

افتح VS Code، اضغط Ctrl+Shift+X لفتح سوق الامتدادات، ثم ابحث عن وثبّت:

الامتداد الغرض
C/C++ (Microsoft) تلوين الصياغة، الإكمال الذكي، دعم التنقيح
Code Runner (Jun Han) تشغيل الشفرة بنقرة واحدة — اضغط Ctrl+Alt+N للتنفيذ

(3) ضبط امتداد C/C++

اضغط Ctrl+Shift+P، اكتب C/C++: Edit Configurations (UI)، وتأكد من صحة الإعدادات التالية:

(4) ضبط التشغيل بنقرة واحدة

بعد تثبيت Code Runner، اضغط Ctrl+Alt+N لتشغيل ملف C الحالي. إذا كنت تفضل التشغيل يدويًا في الطرفية، يمكنك أيضًا استخدام سطر الأوامر مباشرة.

⚠️ ملاحظة: عند فتح مجلد في VS Code، أنشئ مجلدًا مخصصًا (مثلاً c-learn) وافتح المجلد بالكامل بدلًا من ملف واحد. هذا يضمن عمل الامتدادات بشكل صحيح.


3. أول برنامج: Hello World

▶ مثال

C
#include <stdio.h>

int main(void) {
    printf("مرحباً بالعالم!\n");
    return 0;
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
مرحباً بالعالم!

شرح سطر بسطر:

💡 نصيحة: بالاتفاقية، يُرجع البرنامج 0 للانتهاء الطبيعي وقيمة غير صفرية للانتهاء غير الطبيعي. هكذا يحدد نظام التشغيل ما إذا كان البرنامج قد نُفّذ بنجاح.


4. خطوات الترجمة والتنفيذ

C هي لغة مترجمة — الشفرة لا يمكن تشغيلها مباشرة؛ يجب ترجمتها أولًا إلى شفرة آلية. الخطوات الكاملة تبدو هكذا:

TEXT 📖 للعرض فقط
الشفرة المصدرية (.c) → المعالجة الأولية → الترجمة → التجميع → الربط → ملف تنفيذي

(1) تعليمات خطوة بخطوة

الخطوة 1: كتابة الملف المصدري

أنشئ ملفًا جديدًا باسم hello.c في VS Code، اطبع شفرة Hello World أعلاه، واحفظه.

الخطوة 2: الترجمة

BASH
gcc -o hello hello.c

الخطوة 3: التشغيل

BASH
./hello

على Windows:

BASH
hello.exe

(2) الترجمة خطوة بخطوة

إذا كنت تريد فهم كل مرحلة من مراحل الترجمة، يمكنك تشغيلها منفصلة:

BASH
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.o -o hello
المرحلة العلم المخرجات الوصف
المعالجة الأولية -E ملف .i يوسّع وحدات الماكرو، يعالج #include، يزيل التعليقات
الترجمة -S ملف .s يترجم الشفرة المعالجة إلى لغة التجميع
التجميع -c ملف .o يترجم لغة التجميع إلى شفرة آلية (ملف كائني)
الربط لا علم خاص ملف تنفيذي يدمج الملفات الكائنية والمكتبات في البرنامج النهائي
🔥 خطأ شائع: للتطوير اليومي، gcc -o hello hello.c هو كل ما تحتاجه. الترجمة خطوة بخطوة مفيدة بشكل رئيسي لفهم العملية أو استكشاف المشكلات.

(3) أعلام المترجم الشائعة

العلم الغرض مثال
-o تحديد اسم ملف المخرجات gcc -o prog main.c
-Wall تفعيل جميع التحذيرات الشائعة gcc -Wall -o prog main.c
-Wextra تفعيل تحذيرات إضافية gcc -Wextra -o prog main.c
-std=c99 تحديد معيار C gcc -std=c99 -o prog main.c
-g توليد معلومات التنقيح gcc -g -o prog main.c
-O2 مستوى تحسين 2 gcc -O2 -o prog main.c
💡 نصيحة: رجّم دائمًا باستخدام gcc -Wall -Wextra -std=c99 -o prog main.c. التحذيرات هي أصدقاؤك — تساعدك في كشف العديد من الأخطاء المحتملة.


5. أخطاء الترجمة الشائعة

كمبتدئ، ستواجه أخطاء ترجمة. لا تهلع — تعلّم قراءة رسائل الخطأ أهم من تجنّب الأخطاء.

(1) نسيان الفاصلة المنقوطة

C
#include <stdio.h>

int main(void) {
    printf("مرحباً بالعالم!\n")
    return 0;
}
TEXT 📖 للعرض فقط
hello.c:4:33: error: expected ';' before 'return'

رسالة الخطأ تخبرك: اسم الملف:السطر:العمود: وصف الخطأ. هنا، نسيان فاصلة منقوطة في نهاية السطر 4.

(2) مُعرّف غير مُصرّح عنه

TEXT 📖 للعرض فقط
#include <stdio.h>

int main(void) {
    print("مرحباً بالعالم!\n");
    return 0;
}
TEXT 📖 للعرض فقط
hello.c:4:5: warning: implicit declaration of function 'print'

كتبت print بدلًا من printf — المترجم لا يتعرف على هذه الدالة. راجع التهجئة فقط.

(3) نسيان ملف الرأس

C
int main(void) {
    printf("مرحباً بالعالم!\n");
    return 0;
}
TEXT 📖 للعرض فقط
hello.c:2:5: warning: implicit declaration of function 'printf'

نسيت #include <stdio.h>، لذا المترجم لا يعرف تعريف printf.

(4) أقواس غير متطابقة

C
#include <stdio.h>

int main(void) {
    printf("مرحباً بالعالم!\n");
    return 0;
}
TEXT 📖 للعرض فقط
hello.c:5:1: error: expected declaration or statement at end of input

بينما تبدو هذه الشفرة صحيحة، إذا حذفتَ } بالخطأ أثناء الكتابة، ستحصل على هذا النوع من الأخطاء. المترجم يخبرك "هناك شيء ناقص في نهاية الملف" — عادةً قوس غير مغلق.

⚠️ ملاحظة: رقم سطر الخطأ قد يشير إلى السطر بعد المشكلة الفعلية. إذا أبلغ السطر 5 عن خطأ، تحقق من السطر 4 أولًا. المترجم يكتشف المشكلة فقط عند النقطة التي لا يمكنه المتابعة منها، لكن السبب الجذري يكون غالبًا في السطر السابق.


6. تنظيم ملفات المشروع

مع تعقّد برامجك، من الجيد تنظيم ملفاتك هكذا:

TEXT 📖 للعرض فقط
c-learn/
├── ch02/
│   └── hello.c
├── ch03/
│   └── syntax.c
└── ch04/
    └── variables.c

مجلد واحد لكل فصل، أسماء ملفات إنجليزية بأحرف صغيرة، وأسماء تصف المحتوى بوضوح.


❓ أسئلة شائعة

س بعد تثبيت GCC، يقول سطر الأوامر "gcc is not recognized as a command." ماذا أفعل؟
ج هذا يعني أن مجلد bin الخاص بـ GCC ليس في متغير PATH في نظامك. على Windows: انقر بزر الماوس الأيمن على "هذا الكمبيوتر" ← الخصائص ← إعدادات النظام المتقدمة ← متغيرات البيئة ← عدّل Path ← أضف مسار مجلد bin لـ GCC (مثلاً C:\mingw64\bin)، ثم أعِد تشغيل موجه الأوامر.
س هل أختر VS Code أم Dev-C++/Code::Blocks؟
ج يُنصح بـ VS Code. أكثر حداثة، ويمتلك منظومة امتدادات أغنى، ويوفّر دعمًا أفضل لـ C. Dev-C++ لم يُحدّث منذ سنوات، و Code::Blocks يمتلك واجهة قديمة بقدرات تنقيح ضعيفة. VS Code يمتلك منحنى تعلّم أشد بقليل، لكنه يستحق العناء على المدى الطويل.
س ما الفرق بين تحذيرات وأخطاء الترجمة؟
ج الأخطاء تمنع الترجمة — لا يُنشأ ملف تنفيذي. التحذيرات لا توقف الترجمة، لكنها تُشير إلى مشكلات محتملة. تعامل مع التحذيرات كأخطاء: رجّم مع -Wall -Wextra وأزل جميع التحذيرات.
س على macOS، أمر gcc يستدعي فعليًا Clang. هل هذا مهم؟
ج إطلاقًا لا للمبتدئين. Clang متوافق تمامًا مع خيارات GCC الشائعة وصياغة C القياسية. الاختلافات تظهر فقط مع امتدادات GCC الخاصة، والشفرة القياسية تعمل بشكل متماثل على كليهما.

📖 ملخص

📝 تمارين

  1. ثبّت GCC على حاسوبك وتحقق باستخدام gcc --version؛ سجّل رقم الإصدار
  2. اكتب برنامجًا يُخرج اسمك وتحية (مثلاً "مرحبًا، أنا أحمد، وأنا أتعلّم لغة C!")، ثم رجّمه وشغّله
  3. أنشئ عمدًا 3 أخطاء ترجمة (نسيان فاصلة منقوطة، اسم دالة خاطئ، نسيان ملف رأس)، سجّل رسائل خطأ المترجم، وتمرّن على قراءة مخرجات الخطأ
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%