آیا توابع Generic همیشه Inline هستند؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

آیا توابع Generic همیشه Inline هستند؟

+3 امتیاز
آیا توابع Generic را برنامه نویس با فلگ inline براش قرار بده یا نه؟

آیا اصولاً برنامه نویس باید inline بودن توابع را مشخص کنه یا خود کامپایلر بصورت بهینه اینکارو انجام میده؟
سوال شده آبان 18, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

1 پاسخ

+3 امتیاز
 
بهترین پاسخ
  •  درکامپایلر های امروزی inline کردن کاملا بر عهده کامپایلر هاست و استفاده از inline تاثیر خاصی  در inline شدن نداره .
  •  
  • template ها بصورت پیش فرض inline هستند .
  •  
  • کاربرد اصلی کهinline داره جلوگیری از ODR هست که داخل لینک بالا هم ذکر شده .(یعنی این که اگر داخل یک هدر یک تابع inline باشه شما مجاز هستید داخل source code هم یک تابع غیر inline  دیگه با همون نام تعریف کنید . )
  • داخل visual studio میتونید از __forceinline  که در این صورت  اگر امکانش باشه حتما تابع inline میشه  (مثلا اگر تابع recursive با عمق زیاد باشه  با این flag هم حتی inline نمیشه )
پاسخ داده شده آبان 19, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد دی 3, 1393 بوسیله ی Xavi
...