কম্পিউটার টিউটোরিয়াল

C++-এ inline কীওয়ার্ড কখন ব্যবহার করা উচিত?

C++-এ inline কীওয়ার্ড ফাংশন, ভেরিয়েবল (C++17), নেমস্পেস (C++20) - সব জায়গায় ব্যবহৃত হয়। ফাংশনের জন্য এটি কম্পাইলারকে সাজেশন দেয় যে ফাংশন বডি কল সাইটে কপি করে দাও (ইনলাইন এক্সপ্যানশন)।

ইনলাইন ফাংশন

  • ফাংশন কল ওভারহেড কমাতে (পুশ/পপ রেজিস্টার, জাম্প) ইনলাইনিং করা হয়।
  • কম্পাইলার বাধ্য নয় ইনলাইন করার জন্য (হিন্ট মাত্র)।
  • বড় ফাংশন, রিকার্সিভ ফাংশন, ভার্চুয়াল ফাংশন সাধারণত ইনলাইন হয় না।
  • হেডার ফাইলে ডিফাইন করা ফাংশন ইমপ্লিসিটলি ইনলাইন।

উদাহরণ

#include <iostream>
using namespace std;

inline int Max(int x, int y) {
    return (x > y) ? x : y;
}

int main() {
    cout << "Max(20,10): " << Max(20,10) << endl;
    cout << "Max(0,200): " << Max(0,200) << endl;
    cout << "Max(100,1010): " << Max(100,1010) << endl;
    return 0;
}

আউটপুট

Max(20,10): 20
Max(0,200): 200
Max(100,1010): 1010

কখন ব্যবহার করবেন?

  • ছোট, ঘনিস্ট কল হওয়া ফাংশন (গেটার, সেটার, ম্যাথ ইউটিলিটি)।
  • হেডার-অনলি লাইব্রেরি-এ (ODR ভাঙলেই না)।
  • টেমপ্লেট ফাংশন (অবশ্যই হেডারে ডিফাইন করতে হয়, ইমপ্লিসিট ইনলাইন)।

কখন এড়াবেন?

  • বড় ফাংশন (কোড বloat বাড়ায়, ইন্সট্রাকশন ক্যাশ মিস বেড়ায়)।
  • ডিবাগিং-এ ব্রেকপয়েন্ট সেট করা কঠিন হয়।
  • এবিআই (ABI) স্টেবিলিটি দরকার হলে (শেয়ার্ড লাইব্রেরি) - ইনলাইন পরিবর্তন করলে রিকম্পাইল লাগে।

C++17/20: inline variable, inline namespace - একাধিক TU-তে ডেফিনিশন অ্যালাউ।

  1. বাইসেকশন মেথড (Bisection Method) C++ প্রোগ্রাম

  2. C++-এ ইনলাইন ফাংশন (Inline Functions in C++)

  3. লিনাক্সে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)

  4. উইন্ডোজে C++-এর জন্য সেরা IDE কী? (আলাদা লেখা)