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

সি++-এ ইনলাইন (Inline) এবং ম্যাক্রো (Macro)-এর পার্থক্য

এই পোস্টে, আমরা সি++-এ ইনলাইন (Inline) এবং ম্যাক্রো (Macro)-এর মধ্যে পার্থক্য বুঝব।

ইনলাইন (Inline)

  • এটি সি++-এ একটি ফাংশন।
  • এটি কম্পাইলার দ্বারা পার্স (parse) করা হয়।
  • এটি ক্লাসের ভিতরে বা বাইরে ডিফাইন করা যায়।
  • এটি আর্গুমেন্টগুলো শুধু একবার ইভ্যালুয়েট (evaluate) করে।
  • কম্পাইলার সব ফাংশনকে 'ইনলাইন' ফাংশনে রূপান্তর করে এক্সপ্যান্ড (expand) করবে না।
  • ক্লাসের ভিতরে ডিফাইন করা ছোট ফাংশনগুলো অটোমেটিক্যালি ইনলাইন ফাংশন হয়ে যায়।
  • একটি ক্লাসের ভিতরে ইনলাইন ফাংশন সেই ক্লাসের ডেটা মেম্বার অ্যাক্সেস করতে পারে।
  • ইনলাইন ফাংশন কার্লি ব্র্যাকেট (curly brackets) দিয়ে টার্মিনেট করা হয়।
  • এটি ডিবাগ (debug) করা সহজ।
  • কারণ কম্পাইলেশন সময়েই এরর চেকিং (error checking) হয়।
  • এটি ফাংশন বডির সব স্টেটমেন্ট বাইন্ড (bind) করে।

উদাহরণ

inline return_type funct_name ( parameters ) { . . . }

ম্যাক্রো (Macro)

  • এটি প্রিপ্রসেসর (preprocessor) দ্বারা এক্সপ্যান্ড করা হয়।
  • এটি প্রোগ্রামের শুরুতে ডিফাইন করা হয়।
  • এটি কোডের ভিতরে যতবার ব্যবহার করা হয়, আর্গামেন্টগুলো ততবার ইভ্যালুয়েট করা হয়।
  • সেগুলো সবসময় এক্সপ্যান্ড করা হয়।
  • সেগুলো স্পেসিফিক্যালি ডিফাইন করতে হয়।
  • সেগুলো কখনো ক্লাসের মেম্বার হয় না।
  • সেগুলো ক্লাসের ডেটা মেম্বার অ্যাক্সেস করতে পারে না।
  • ম্যাক্রোর ডেফিনিশন নিউ লাইন (new line) দিয়ে শেষ হয়।
  • ম্যাক্রো ডিবাগ করা কঠিন কারণ কম্পাইল টাইমে এরর চেকিং হয় না।
  • একাধিক স্টেটমেন্ট থাকলে বাইন্ডিং সমস্যা হয় কারণ এর কোনো টার্মিনেশন সিম্বল নেই।

উদাহরণ

#define macro_name char_sequence
  1. C++-এ new অপারেটর এবং operator new-এর পার্থক্য কী?

  2. C++-এ private, public, protected মডিফায়ারের পার্থক্য

  3. C++-এ ডট (.) অপারেটর এবং -> (অ্যারো) অপারেটরের পার্থক্য

  4. C#-তে Class এবং Structure-এর পার্থক্য