---
title: Inline Function
localeTitle: وظيفة مضمنة
---
# وظيفة مضمنة

## المقدمة

الدالة المضمنة هي دالة خاصة معرفة في C ++ ويتم توسيعها في السطر عندما يتم استدعاؤها.

الآن ، ماذا يعني هذا بالضبط؟

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

ومع ذلك ، لا يمكننا ضمان أن كل دالة مضمن مضمنة سيتم مضمنة. لأننا عندما نعلن عن وظيفة على هيئة `inline` ، فهي طلب ، وليست أمرًا. قد تجاهل المحول البرمجي طلب inlining في الحالات التالية: 1) إذا كان يحتوي على وظيفة حلقة على سبيل المثال `for` حلقة، `while` حلقة، `do-while` حلقة الخ 2) إذا كانت الدالة تحتوي على `switch` أو عبارة `goto` . 3) إذا كانت الدالة لا تعيد أي شيء حتى إذا تم ذكر نوع الإرجاع (بخلاف `void` طبعا). 4) إذا كانت الدالة تحتوي على متغير ثابت. 5) إذا كانت الوظيفة تحتوي على استدعاء تكراري.

\`\` \`ج + +

## بناء الجملة :-

اسم _دالة نوع_ الإرجاع المضمن (argument\_list) {

// وظيفة الهيئة

}

 `## When to use Inline function 
 
 * When the function performs small tasks and is called very often. 
 * When performance is important. 
 * Instead of a macro. 
` 

ج ++

# تتضمن

استخدام اسم للمحطة؛

class MathOperation {

عامة:

 `inline int add(int x, int y){ 
 
  return(x+y); 
 } 
 
 inline float div(int n1, float n2){ 
 
  return(n1/n2); 
 } 
` 

}؛

انت مين(){

MathOperation obj؛

cout << "Addition is:" << obj.add (34،12) << <"\\ n"؛ cout << "Division is:" << obj.div (12،3.4) << "\\ n"؛

العودة 0

} \`\` \`

## مزايا وظيفة مضمنة

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

## مساوئ وظيفة مضمنة

*   عند استخدامه في رأس الصفحة ، فإنه يجعل ملف رأسك أكبر مع المعلومات التي لا يهتم بها المستخدمون.
*   يزيد الحجم القابل للتنفيذ بسبب توسيع التعليمة البرمجية.
*   يتم حل C ++ المضمن في وقت التحويل البرمجي. مما يعني أنه إذا قمت بتغيير رمز الدالة المائلة ، ستحتاج إلى إعادة ترجمة جميع التعليمات البرمجية التي تستخدمها للتأكد من تحديثها.
*   كما ذكر أعلاه يزيد من حجم الملف التنفيذي ، مما قد يتسبب في الخداع في الذاكرة. عدد أكبر من خطأ الصفحة ، مما يؤدي إلى انخفاض أداء البرنامج.