الفرق بين المضمنة وماكرو في C ++
المحتوى
الماكرو هو تعليمة يتمدد في وقت الاحتجاج بها. يمكن أيضًا تعريف الوظائف ، مثل وحدات الماكرو. وبالمثل ، تتوسع الدوال المضمّنة أيضًا عند نقطة الاحتجاج بها. الفرق الأساسي واحد بين وظيفة مضمنة و الماكرو هو أن وظائف مضمنة يتم توسيعها خلال التحويل البرمجي، و ال وحدات الماكرو يتم توسيع عندما تتم معالجة البرنامج من قبل المعالج.
دعنا ندرس الفرق بين المضمنة والماكرو بمساعدة مخطط المقارنة.
- رسم بياني للمقارنة
- تعريف
- الاختلافات الرئيسية
- خاتمة
رسم بياني للمقارنة
أساس للمقارنة | في النسق | دقيق |
---|---|---|
الأساسي | يتم تحليل الدالات المضمّنة بواسطة المحول البرمجي. | يتم توسيع وحدات الماكرو من قبل المعالج. |
بناء الجملة | مضمنة return_type funct_name (معلمات) {. . . } | #define macro_name char_sequence |
الكلمات الرئيسية المستخدمة | في النسق | #حدد |
يعرف | يمكن تعريفها داخل أو خارج الفصل. | يتم تعريفه دائمًا في بداية البرنامج. |
تقييم | يقيم الوسيطة مرة واحدة فقط. | يقوم بتقييم الوسيطة في كل مرة يتم استخدامه في التعليمات البرمجية. |
توسيع | قد لا المحول البرمجي مضمنة وتوسيع كافة الوظائف. | يتم دائمًا توسيع وحدات الماكرو. |
التشغيل الآلي | يتم إجراء الوظائف القصيرة ، المعرفة داخل الفصل تلقائيًا على وظائف مضمنة. | يجب تحديد وحدات الماكرو على وجه التحديد. |
الوصول | يمكن لدالة عضو مضمنة الوصول إلى أعضاء بيانات الفصل. | لا يمكن أن تكون وحدات الماكرو أعضاء في الفصل ولا يمكنها الوصول إلى أعضاء بيانات الفصل. |
نهاية | ينتهي تعريف الدالة المضمنة مع الأقواس المعقوفة في نهاية الوظيفة المضمنة. | تعريف الماكرو ينتهي بالسطر الجديد. |
التصحيح | التصحيح سهل لوظيفة مضمّنة كما يتم التحقق من الأخطاء أثناء الترجمة. | تصحيح الأخطاء يصبح من الصعب على وحدات الماكرو كما لا يحدث تدقيق الأخطاء أثناء الترجمة. |
ربط | تقوم دالة مضمنة بربط جميع العبارات في نص الوظيفة بشكل جيد للغاية حيث يبدأ نص الوظيفة وينتهي بأقواس معقوفة. | يواجه الماكرو مشكلة الربط إذا كان لديه أكثر من عبارة واحدة ، حيث لا يوجد لديه رمز إنهاء. |
تعريف مضمنة
تبدو الوظيفة المضمنة كدالة عادية ، ولكن تسبقها الكلمة الأساسية "في النسق". الدالات المضمّنة هي وظائف ذات طول قصير يتم توسيعها في نقطة الاحتجاج ، بدلاً من استدعاءها. دعونا نفهم الدوال المضمنة بمثال.
#تتضمن في البرنامج المذكور أعلاه ، قمت بتعريف وتعريف (تهيئة) الدالة () كدالة مضمّنة في فئة "المثال". سيتم توسيع رمز دالة التهيئة () حيث يتم استدعاؤها بواسطة كائن الفئة "مثال". لم يتم التصريح عن عرض الوظيفة () ، المحدد في مثال الفئة ، في السطر ولكن يمكن أن يعتبره المترجم مضمّنًا ، في C ++ ، يتم تحديد الوظيفة المحددة داخل الفصل تلقائيًا بواسطة برنامج التحويل البرمجي مع الأخذ في الاعتبار طول الوظيفة. الماكرو هو "التوجيه قبل المعالجين". قبل التحويل البرمجي ، يتم فحص البرنامج من قبل المعالج الأولي وفي أي وقت يجد فيه الماكرو في البرنامج ، فإنه يستبدل هذا الماكرو بتعريفه. وبالتالي ، يعتبر الماكرو "البديل". دعونا دراسة الماكرو مع مثال. #تتضمن في التعليمة البرمجية أعلاه ، أعلنت عن دالة ماكرو GREATER () ، والتي تقارن وتجد العدد الأكبر لكلتا المعلمتين. يمكنك ملاحظة أنه لا يوجد فاصلة منقوطة لإنهاء الماكرو حيث يتم إنهاء الماكرو فقط بواسطة السطر الجديد. نظرًا لأن الماكرو مجرد بديل ، فسوف يقوم بتوسيع رمز الماكرو حيث يتم استدعاءه. الدالات المضمّنة أكثر إقناعًا من دالة الماكرو. يوفر C ++ أيضًا طريقة أفضل لتحديد ثابت ، والذي يستخدم كلمة أساسية "const".
تعريف ماكرو
الاستنتاجات: