inline یا define - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۳۲۷ نفر آنلاین
۱۳۲ عضو و ۱۹۵ مهمان در سایت حاضرند

inline یا define

0 امتیاز
سلام

آیا در تعریف توابع هر 2 یک کارایی مشخص دارن؟ یعنی هیچ مزیتی نسبت به هم ندارند؟ جالب اینجاست که هر 2 هم کدشون جایگرین میشه در دستور فراخوانی تفاوت این 2 را متوجه نمی شم.
سوال شده آذر 12, 1392  بوسیله ی crypto_code (امتیاز 51)   4 7 11
دوباره تگ گذاری شد بهمن 12, 1392 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
به نظر من فقط در شرایط خاص از ماکرو استفاده کنید در بقیه موارد سعی کنید از تابع inline استفاده کنید چون ماکروهای که به صورت تابعی استفاده می شن یک سری اشکالاتی دارند که در زیر با مثال ذکر می کنیم و در ضمن همه پارامترها بایستی ارزیابی شن که این یعنی افت کارایی برنامه در نقاط حساس.
 
  int res;
  int value =1;
  res = inline_code(value++);  
  res = inline_code(f());  
  cout << value << endl;
  value = 1;
  res = func_code(value++);    
  res = func_code(f());     
  cout << value << endl;

 

در مواردی هم می تونید از ماکرو به عنوان تابع استفاده کنید به فرض شما تابعی دارید که حافظه های زیادی را در طول اجرا از heap گرفته و در صورت رخ دادن شرایط مختلف مجبور به خروج اضطراری در جاهای مختلف آن تابع میشد در این صورت دیگه نیازی نیست تکه از کد وظیفه آزاد کردن کلیه ها حافظه های اشغال شده را دارد در همه نقاط خروج تکرار کنید در این شرایط می توانید از تابع ماکرو استفاده کنید .
پاسخ داده شده آذر 12, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد آذر 12, 1392 بوسیله ی crypto_code
...