সি ++ এ ইনলাইন এবং ম্যাক্রোর মধ্যে পার্থক্য

লেখক: Laura McKinney
সৃষ্টির তারিখ: 2 এপ্রিল 2021
আপডেটের তারিখ: 16 মে 2024
Anonim
সি ++ এ ইনলাইন এবং ম্যাক্রোর মধ্যে পার্থক্য - প্রযুক্তি
সি ++ এ ইনলাইন এবং ম্যাক্রোর মধ্যে পার্থক্য - প্রযুক্তি

কন্টেন্ট


ম্যাক্রো হ'ল একটি নির্দেশ যা অনুরোধের সময় প্রসারিত হয়। ক্রিয়াকলাপগুলি ম্যাক্রোর মতো সংজ্ঞায়িতও করা যায়। একইভাবে, ইনলাইন ফাংশনগুলিও তার অনুরোধের সময়ে প্রসারিত হয়। ইনলাইন এবং ম্যাক্রো ফাংশনের মধ্যে একটি প্রাথমিক পার্থক্য হ'ল ইনলাইন ফাংশন সময় বাড়ানো হয় সংকলন, এবং ম্যাক্রো প্রোগ্রামটি যখন দ্বারা প্রক্রিয়া করা হয় তখন প্রসারিত হয় প্রাক প্রসেসর.

আসুন তুলনা চার্টের সাহায্যে ইনলাইন এবং ম্যাক্রোর মধ্যে পার্থক্যটি অধ্যয়ন করি।

  1. তুলনা রেখাচিত্র
  2. সংজ্ঞা
  3. মূল পার্থক্য
  4. উপসংহার

তুলনা রেখাচিত্র

তুলনা করার জন্য বেসসারিতেম্যাক্রো
মৌলিক ইনলাইন ফাংশন সংকলক দ্বারা পার্স করা হয়।ম্যাক্রোগুলি প্রিপ্রসেসর দ্বারা প্রসারিত হয়।
বাক্য গঠনইনলাইন রিটার্ন_ টাইপ ফান্ট_নাম (পরামিতি) {। । । }# নির্ধারিত ম্যাক্রো_নাম চর_সিকোয়েন্স
ব্যবহৃত কীওয়ার্ডসারিতে
# define
নির্ধারিতএটি শ্রেণীর ভিতরে বা বাইরে সংজ্ঞায়িত করা যেতে পারে।এটি প্রোগ্রামের শুরুতে সর্বদা সংজ্ঞায়িত হয়।
মূল্যায়নএটি যুক্তিটি একবারে মূল্যায়ন করে।কোডটিতে প্রতিবার এটি ব্যবহার করা হলে এটি যুক্তিটি মূল্যায়ন করে।
সম্প্রসারণ সংকলকটি সমস্ত ক্রিয়াকে ইনলাইন এবং প্রসারিত করতে পারে না।ম্যাক্রো সর্বদা প্রসারিত হয়।
স্বয়ংক্রিয়তাক্লাসের ভিতরে সংক্ষিপ্ত ফাংশনগুলি স্বয়ংক্রিয়ভাবে ইনলাইন ফাংশনগুলিতে তৈরি করা হয়।ম্যাক্রোগুলি নির্দিষ্টভাবে সংজ্ঞায়িত করা উচিত।
অ্যাক্সেস করাকোনও ইনলাইন সদস্য ফাংশন ক্লাসের ডেটা সদস্যদের অ্যাক্সেস করতে পারে।ম্যাক্রোস কখনই শ্রেণীর সদস্য হতে পারে না এবং শ্রেণীর ডেটা সদস্যদের অ্যাক্সেস করতে পারে না।
পরিসমাপ্তিইনলাইন ফাংশনটির সংজ্ঞা ইনলাইন ফাংশনের শেষে কোঁকড়ানো বন্ধনীগুলির সাথে শেষ হয়।ম্যাক্রোর সংজ্ঞাটি নতুন লাইনের সাথে শেষ হয়।
ডিবাগএকটি ইনলাইন ফাংশনের জন্য ডিবাগ করা সহজ কারণ সংকলনের সময় ত্রুটি পরীক্ষা করা হয়।সংকলনের সময় ত্রুটি পরীক্ষা করা না হওয়ায় ম্যাক্রোদের পক্ষে ডিবাগিং করা কঠিন হয়ে পড়ে।
বাঁধাইএকটি ইনলাইন ফাংশন ফাংশনের শরীরে সমস্ত বিবৃতি খুব ভালভাবে ফাংশনটির শুরুর সাথে আবদ্ধ করে এবং কোঁকড়া বন্ধনী দিয়ে শেষ হয়।একটি ম্যাক্রো বাধ্যতামূলক সমস্যার মুখোমুখি হয় যদি এটির একাধিক বক্তব্য থাকে, কারণ এতে কোনও সমাপ্তি চিহ্ন নেই।


ইনলাইন সংজ্ঞা

একটি ইনলাইন ফাংশনটি নিয়মিত ফাংশনের মতো মনে হয় তবে এর আগে মূল শব্দটি “সারিতে"। ইনলাইন ফাংশনগুলি হ'ল সংক্ষিপ্ত দৈর্ঘ্যের ফাংশন যা ডাকা হওয়ার পরিবর্তে এর অনুরোধের বিন্দুতে প্রসারিত হয়। আসুন একটি উদাহরণ সহ ইনলাইন ফাংশনগুলি বুঝতে পারি।

# অন্তর্ভুক্ত নেমস্পেস স্ট্যান্ড ব্যবহার করে; শ্রেণীর উদাহরণ {int a, b; সর্বজনীন: ইনলাইন শূন্য প্রারম্ভিককরণ (int x, int y) {a = x; b = y} শূন্য প্রদর্শন () out cout << a << "" <

উপরের প্রোগ্রামে, আমি ঘোষিত ও সংজ্ঞায়িত করেছি, ফাংশনটি "উদাহরণ" শ্রেণিতে একটি ইনলাইন ফাংশন হিসাবে (), আরম্ভ করুন। ইনিশিয়ালাইজেশন () ফাংশনটির কোডটি প্রসারিত হবে যেখানে এটি "উদাহরণ" শ্রেণীর অবজেক্টের মাধ্যমে আহ্বান করা হয়েছে। সি ++ এ ক্লাসের ভিতরে সংজ্ঞায়িত ফাংশনটি স্বয়ংক্রিয়ভাবে ফাংশনের দৈর্ঘ্য বিবেচনা করে সংকলক দ্বারা ইনলাইন তৈরি করা হয়।


  • ইনলাইন ফাংশন ফাংশন কলিং এবং রিটার্নের ওভারহেড হ্রাস করে যা ফলস্বরূপ প্রোগ্রামটি কার্যকর করার সময় হ্রাস করে।এছাড়াও, আর্গুমেন্টগুলি স্ট্যাকের দিকে ঠেলে দেওয়া হয় এবং কোনও ফাংশন বলা হয়ে গেলে পুনরায় নিবন্ধগুলি সংরক্ষণ করা হয় এবং ফাংশন ফিরে আসার সময় পুনরায় সেট করা হয়, এতে সময় লাগে, ইনলাইন ফাংশনগুলি এড়ানো হয় কারণ প্রতিবার স্থানীয় ভেরিয়েবল এবং আনুষ্ঠানিক পরামিতি তৈরি করার প্রয়োজন নেই reg ।
  • ইনলাইন ফাংশন ক্লাসের সদস্য হতে পারে এবং ক্লাসের ডেটা সদস্যকেও অ্যাক্সেস করতে পারে।
  • ইনলাইন ফাংশন প্রোগ্রামটি কার্যকর করার সময় হ্রাস করে তবে, কখনও কখনও যদি ইনলাইন ফাংশনের দৈর্ঘ্য তখন বেশি হয় তবে নকল কোডের কারণে প্রোগ্রামটির আকারও বৃদ্ধি পাবে। সুতরাং, খুব ছোট ফাংশনগুলি ইনলাইন করা একটি ভাল অনুশীলন।
  • ইনলাইন ফাংশনের যুক্তিটি একবারে মূল্যায়ন করা হয়।

ম্যাক্রো সংজ্ঞা

ম্যাক্রো একটি "প্রিপ্রোসেসরস নির্দেশিকা"। সংকলনের আগে প্রোগ্রামটি প্রিপ্রোসেসর দ্বারা পরীক্ষা করা হয় এবং যেখানে প্রোগ্রামে ম্যাক্রোটি খুঁজে পাওয়া যায়, এটি তার সংজ্ঞা অনুসারে সেই ম্যাক্রোকে প্রতিস্থাপন করে। সুতরাং, ম্যাক্রোটিকে "প্রতিস্থাপন" হিসাবে বিবেচনা করা হয়। আসুন একটি উদাহরণ সহ ম্যাক্রো অধ্যয়ন করি।

# অন্তর্ভুক্ত # নির্ধারিত গ্রেটার (ক, খ) ((ক <বি)? বি: ক) ইনট মেন (শূন্য) out কোট << "১০ এবং ২০ এর গ্রেটার" << গ্রেটার ("20", "10") << " N"; প্রত্যাবর্তন 0; }

উপরের কোডে, আমি একটি ম্যাক্রো ফাংশন গ্রেটার () ঘোষণা করেছিলাম, যা উভয় পরামিতির তুলনা করে এবং আরও বেশি সংখ্যক সন্ধান করে। আপনি পর্যবেক্ষণ করতে পারেন যে ম্যাক্রোটি কেবলমাত্র নতুন লাইনের মাধ্যমে বন্ধ করা হওয়ায় ম্যাক্রোটি বন্ধ করার জন্য কোনও সেমিকোলন নেই। যেহেতু ম্যাক্রো কেবলমাত্র একটি প্রতিস্থাপন, এটি ম্যাক্রোর কোডটি প্রসারিত করবে যেখানে এটি আহ্বান করা হয়েছে।

  • প্রোগ্রামারদের পড়ার সময় প্রোগ্রামের সমস্ত ম্যাক্রোগুলিকে চিহ্নিত করা সহজ করার জন্য ম্যাক্রোগুলি সর্বদা মূল অক্ষরে সংজ্ঞায়িত হয়।
  • ম্যাক্রো কখনই কোনও শ্রেণীর সদস্য ফাংশন হতে পারে না বা এটি কোনও শ্রেণির ডেটা সদস্যদের অ্যাক্সেস করতে পারে না।
  • ম্যাক্রো ফাংশনটি তার সংজ্ঞায় প্রতিবার উপস্থিত হওয়ার সাথে যুক্তিটি মূল্যায়ন করে যা একটি অপ্রত্যাশিত ফলাফলের ফলাফল করে।
  • ম্যাক্রো অবশ্যই একটি ছোট আকারের হবে কারণ বৃহত্তর ম্যাক্রো অকারণে কোডের আকার বাড়িয়ে তুলবে।
  1. ইনলাইন এবং ম্যাক্রোর মধ্যে মূল পার্থক্য হ'ল একটি ইনলাইন ফাংশন সংকলক দ্বারা পার্স করা হয় যখন একটি প্রোগ্রামের ম্যাক্রোগুলি প্রিপ্রসেসর দ্বারা প্রসারিত হয়।
  2. একটি ইনলাইন ফাংশন সংজ্ঞায়িত করতে ব্যবহৃত কীওয়ার্ডটি হ'ল "সারিতে"যদিও, ম্যাক্রো সংজ্ঞায়িত করতে ব্যবহৃত কীওয়ার্ডটি হ'ল"# define“.
  3. একবার ইনলাইন ফাংশনটি কোনও শ্রেণীর মধ্যে ডিক্যালার হয়ে গেলে এটি শ্রেণীর ভিতরে বা শ্রেণীর বাইরেও সংজ্ঞায়িত করা যায়। অন্যদিকে, প্রোগ্রামের শুরুতে একটি ম্যাক্রো সর্বদা সংজ্ঞায়িত হয়।
  4. ইনলাইন ফাংশনগুলিতে পাস হওয়া আর্গুমেন্টটি একবারে সংকলন করার সময় খালি করা হয় যখন ম্যাক্রোগুলি যুক্তিটি প্রতিবার কোডে ম্যাক্রো ব্যবহার করার সময় মূল্যায়ন করা হয়।
  5. সংকলক কোনও শ্রেণীর ভিতরে সংজ্ঞায়িত সমস্ত ফাংশনটিকে ইনলাইন এবং প্রসারিত করতে পারে না। অন্যদিকে, ম্যাক্রোগুলি সর্বদা প্রসারিত হয়।
  6. ইনলাইন কীওয়ার্ড ছাড়াই কোনও শ্রেণীর ভিতরে সংক্ষিপ্ত ফাংশনটি স্বয়ংক্রিয়ভাবে ইনলাইন ফাংশনগুলি তৈরি করা হয়। অন্যদিকে, ম্যাক্রো নির্দিষ্টভাবে সংজ্ঞায়িত করা উচিত।
  7. ইনলাইনযুক্ত একটি ফাংশন শ্রেণীর সদস্যদের অ্যাক্সেস করতে পারে তবে ম্যাক্রো কখনই শ্রেণীর সদস্যদের অ্যাক্সেস করতে পারে না।
  8. একটি ইনলাইন ফাংশনটি বন্ধ করতে একটি বদ্ধ কোঁকড়া ধনুর্বন্ধনী প্রয়োজন যখন একটি নতুন লাইন শুরু করার সাথে একটি ম্যাক্রো সমাপ্ত হয়।
  9. কোনও ত্রুটির জন্য সংকলনের সময় এটি পরীক্ষা করা হওয়ায় ডিবেগ ইনলন ফাংশনের পক্ষে সহজ হয়ে ওঠে। অন্যদিকে, সংকলনের সময় কোনও ম্যাক্রো চেক করা হয় না, ম্যাক্রো ডিবাগ করা কঠিন হয়ে পড়ে।
  10. একটি ফাংশন হওয়ার কারণে একটি ইনলাইন ফাংশন তার সদস্যদের শুরু এবং বন্ধ কোঁকড়া ধনুর্বন্ধনী মধ্যে আবদ্ধ করে। অন্যদিকে, ম্যাক্রোর কোনও সমাপ্তি প্রতীক নেই তাই ম্যাক্রোতে যখন একের বেশি বিবৃতি থাকে তখন বাঁধাই করা কঠিন হয়ে যায়।

উপসংহার:

ইনলাইন ফাংশন ম্যাক্রো ফাংশনের চেয়ে অনেক বেশি বিশ্বাসযোগ্য। সি ++ ধ্রুবককে সংজ্ঞায়িত করার জন্য আরও ভাল উপায় সরবরাহ করে যা "কনস্ট" শব্দটি ব্যবহার করে।