الماكــــرو MACROS

هو مجموعة من التعليمات تؤدى غرض معين ويشبه إلى حد كبير الدالة function ويتم إنشاء الماكرو مرة واحدة وبعد ذلك يمكن استدعائه كلما احتجت إيه ( أى يتم تعريف الثوابت او عمليات محدده فى بداية البرنامج وتكون لها صفه العمومية للاستخدام داخل الدالة الرئيسية والدوال الفرعية )
إذن : الماكرو من ضمن بناء برنامج لغة الـــ C

كيفية إنشاء الماكرو :-
- يتم ذلك باستعمال الكلمة #define
- وهذه الكلمة تسمى directive او preprocessor ومعناها التوجيه

* الصورة العامة# define macro line
مثلا #define a 5
وهى عبارة عن تعريف طرف بطرف ومعناها عرف المتغير a بالقيمة 5
تمرين يوضح كيفية الإعلان عن الماكرو وكيفية استعماله
كود:
كود: # include<stdio.h> # define sum(a,b) a+b # define mul(x,y) x*y
كود:
كود:
 
main ( ) { int v1=5 , v2 = 10; printf(“\n\n sum(v1,v2) = % d”,sum(v1,v2); printf(“\n\n mul(v1,v2) = % d”,mul(v1,v2); }
ملاحظات على البرنامج :-
- فى السطر رقم 2 استخدمنا كلمة define لتعريف ماكرو بالاسم sum ووظيفته استبدال المتغيرينa,b بالصور a+b
- كذلك فى السطر رقم 3 يستبدل المتغيرين x,y بنتيجه الضرب x*y
- ومعناها كلما قبل المترجم اللغة الطرف الأول للماكرو يستبدله بالطرف الثانى
ملاحظ هامة : المتغيرين a,b يمكن استبدالهما بأى متغيرين أو قيمتين داخل البرنامج. واسم الماكرو هو الذى يحدد العملية التى يقوم بها الماكرو ( هل هى عملية جمع أم ضرب أم .. بناء على المعادلة الموجودة فى الطرف الأيمن من الماكرو )
* الفرق بين الماكرو وبين الدالة :- اى برنامج يمر بثلاث مراحل :-
المرحلة الأولى : كتابة وهذا يسمى source code ويخصص لملف المصدر الامتداد .C
المرحلة الثانية : ترجمة البرنامج للغة يفهمها الحاسب وتسمى هذه المرحلة compilation ويخصص للملف الامتداد .obj
المرحلة الثالثة : ربط الملف الـ object بمكتبات اللغة ليصبح قابل للتنفيذ وتسمى هذه العملية linking ويخصص لهذا الملف الإمتداد .exe
ومن خلال هذه المراحل تستطيع ان تستخرج الفرق بين الماكرو وبين الدالة كما يلى :-
1- فى مرحلة الكتابة ايس هناك فرق بين الماكرو وبين الدالة.
2- فى مرحلة الترجمة compilation يتم تحويل تعليمات الدالة الى لغة الآلة object وتنتظر وحدة الربط linking ولا تنفذ الدالة إلا فى مرحلة الربط
3- اما فى حالة الماكرو يتم استبدال الماكرو بنتيجة تنفيذ الماكرو
( فى التمرين السابق يتم استبدال الماكرو الموجود فى السطر رقم 7 بنتيجة التنفيذ مباشرة . اى يتم وضع القيمة 15 وهى نتيجة تنفيذ الماكرو مكان sum(v1,v2) وبالتالى عندما تاتى مرحلة التنفيذ يجد البرنامج نتيجة تنفيذ الماكرو جاهز وهى 15 )
\ مزايا الماكرو :-
1- بسيط فى الإنشاء
2- بسيط فى الاستعمال ويعطى فى النهاية ملف تنفيذى أصغر
3- إذا كانت العملية المطلوبة بسيطة ويمكن كتابتها فى سطر واحد نستعمل الماكرو.

تمرين :