C থেকে C++ কল করুন

C Theke C Kala Karuna



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

বুনিয়াদি বোঝা

যখন C থেকে C++ ফাংশনগুলি আহ্বান করার এবং C++ অবজেক্টগুলি ব্যবহার করার কথা আসে, তখন বেশ কয়েকটি মূল উপাদান বিবেচনা করা প্রয়োজন:

C-তে C++ ক্লাসের উল্লেখ করা

C-তে C++ ক্লাসের উল্লেখ করার জন্য একটি সাধারণ পদ্ধতির মধ্যে রয়েছে ক্লাসের পয়েন্টার ব্যবহার করা যা C এবং C++ কোডের মধ্যে পাস করা যেতে পারে।







নাম ম্যাঙ্গেল

নাম পরিবর্তনগুলি প্রতিরোধ করতে যা C-তে একটি স্বীকৃতিকে প্রভাবিত করতে পারে, নামগুলি সামঞ্জস্যপূর্ণ রাখা অত্যন্ত গুরুত্বপূর্ণ। এটি নিশ্চিত করে যে সি সঠিকভাবে ফাংশন এবং বস্তুগুলি সনাক্ত করতে এবং ব্যবহার করতে পারে।



দ্বৈত উদ্দেশ্যের জন্য হেডার ফাইল

একটি হেডার ফাইল একটি প্রধান ভূমিকা পালন করে, C এবং C++ উভয়ের জন্যই দ্বৈত উদ্দেশ্য পরিবেশন করে। এটিতে ক্লাস সংজ্ঞা রয়েছে যা C++ দ্বারা স্বীকৃত এবং C-এর জন্য অ্যাক্সেসর ফাংশনগুলিকে এনক্যাপসুলেট করে।



কিভাবে C থেকে C++ কল করবেন

C থেকে C++ ফাংশন কল করার জন্য, বাহ্যিক “C” ঘোষণা অত্যন্ত গুরুত্বপূর্ণ। যখন C++ ফাংশনে প্রয়োগ করা হয়, এটি নিশ্চিত করে যে ফাংশনের নামগুলি সংকলন প্রক্রিয়া চলাকালীন C স্টাইলে (সি-লিংকেজ ব্যবহার করে) চিকিত্সা করা হয়েছে। C C++ বৈশিষ্ট্যগুলিকে চিনতে পারে না যেমন ফাংশন ওভারলোডিং এবং নাম ম্যাঙ্গলিং যা C++ সংকলনের সময় ঘটতে পারে। বাহ্যিক “C” ব্যবহার করে, C++ কম্পাইলার এমন ফাংশন নাম তৈরি করে যা C কনভেনশন মেনে চলে, যা একটি নিরবচ্ছিন্ন আন্তঃকার্যক্ষমতার অনুমতি দেয়। এই ঘোষণাটি একটি প্রমিত ইন্টারফেস প্রদান করে, নামকরণের দ্বন্দ্ব বা সামঞ্জস্যতার সমস্যাগুলির সম্মুখীন না হয়েই C++ ফাংশন অ্যাক্সেস এবং ব্যবহার করতে একটি C কোড সক্ষম করে। নিচে C থেকে C++ কল করার উদাহরণ দেওয়া হল। এই সংমিশ্রণটি কীভাবে কাজ করে তা বোঝার জন্য, আসুন দৃষ্টান্তগুলি আরও ঘনিষ্ঠভাবে দেখি।





ব্যবহারিক উদাহরণ: C থেকে C++ কল করে একটি বৃত্তের ক্ষেত্রফল গণনা করুন

এই সাধারণ উদাহরণে, আমরা আপনাকে গাইড করব কিভাবে আপনি C-তে একটি C++ ফাংশন কল করে একটি বৃত্তের ক্ষেত্রফল গণনা করতে পারেন। এই কোডটি একটি হেডার ফাইল (circle.h) এবং একটি বাস্তবায়ন ফাইল (circle.cpp) নিয়ে গঠিত। কোডের প্রথম অংশে হেডার ফাইলে এক্সটার্ন সি ডিক্লেয়ারেশন জড়িত। নিম্নলিখিত কোড দেখুন. তারপর, আসুন কোডের প্রতিটি লাইন পৃথকভাবে বিশদভাবে বর্ণনা করি:

#ifndef CIRCLE_AREA
#CIRCLE_AREA সংজ্ঞায়িত করুন

বহিরাগত 'গ' {

দ্বিগুণ calculate_CArea ( দ্বিগুণ rad ) ;

}

#যদি শেষ

দ্বিগুণ Circle_CArea ( দ্বিগুণ rad ) {

ফিরে 3.14159 * rad * rad ;

}

আসুন প্রতিটি অংশ বিভক্ত করা যাক:



#ifndef CIRCLE_AREA এবং # CIRCLE_AREA সংজ্ঞায়িত করুন

এই লাইনগুলি অন্তর্ভুক্ত গার্ডের অংশ যা নিশ্চিত করে যে হেডার ফাইলের বিষয়বস্তু সংকলন প্রক্রিয়ায় শুধুমাত্র একবার অন্তর্ভুক্ত করা হয়েছে। CIRCLE_AREA সংজ্ঞায়িত না হলে, পরবর্তী কোড অন্তর্ভুক্ত করা হবে এবং CIRCLE_AREA সংজ্ঞায়িত করা হবে।

বহিরাগত 'গ'

এই সিনট্যাক্সটি ঘোষণা করতে ব্যবহৃত হয় যে নিম্নলিখিত ফাংশনের একটি সি লিঙ্কেজ রয়েছে। C এবং C++ উভয় থেকে কল করা হবে এমন একটি কোড লেখার সময় এটি অপরিহার্য।

দ্বিগুণ calculate_CArea ( দ্বিগুণ rad ) ;

এই লাইনটি 'calculate_Carea' নামের একটি ফাংশন ঘোষণা করে যা একটি ডবল আর্গুমেন্ট (rad) নেয় এবং একটি ডবল প্রদান করে।

হেডার ফাইলের বাহ্যিক 'C' ঘোষণাটি কম্পাইলারকে ফাংশনের জন্য একটি সি-স্টাইল লিঙ্কেজ ব্যবহার করার জন্য জানায়, এটি সি কোড থেকে কলযোগ্য করে তোলে। একটি 'circle.h' ফাইলে সংরক্ষণ করে একটি বৃত্তের ক্ষেত্রফল খুঁজে পেতে এই কোডটি ব্যবহার করুন৷ একবার আপনি এই হেডার ফাইলটি সংরক্ষণ করলে, আপনাকে যা করতে হবে তা হল এটিকে C++ প্রোগ্রামে একটি হেডার ফাইল হিসাবে অন্তর্ভুক্ত করা এবং পছন্দসই ফাংশন সম্পাদন করা। নিচের C কোডটি একটি বৃত্তের ক্ষেত্রফল গণনা করে। 'main.c' ফাইলে C++ হেডার রয়েছে এবং সরাসরি 'Circle_Carea' কে কল করে। নিম্নলিখিত কোড দেখুন:

# 'circle.h' অন্তর্ভুক্ত করুন

int প্রধান ( ) {

দ্বিগুণ rads = 5.0 ;

দ্বিগুণ এলাকা = Circle_CArea ( rads ) ;

printf ( 'বৃত্তের ক্ষেত্রফল হল:  %.2f \n ' , এলাকা ) ;

ফিরে 0 ;

}

এই সাধারণ সি প্রোগ্রামটি 'circle.h' নামের পূর্ববর্তী ফাইলে সংজ্ঞায়িত একটি ফাংশন ব্যবহার করে একটি বৃত্তের এলাকা গণনা করে এবং মুদ্রণ করে। আসুন কোডটি ভেঙে দেওয়া যাক:

# 'circle.h' অন্তর্ভুক্ত করুন

এই লাইনটি প্রোগ্রামের 'circle.h' হেডার ফাইলের বিষয়বস্তু অন্তর্ভুক্ত করে। শিরোনাম ফাইলে সম্ভবত ফাংশন ঘোষণা বা ম্যাক্রো রয়েছে যা বৃত্ত গণনার সাথে সম্পর্কিত।

int প্রধান ( ) {

প্রোগ্রামের সঞ্চালন প্রধান ফাংশন দিয়ে শুরু হয়, সি প্রোগ্রামের প্রবেশ বিন্দু।

দ্বিগুণ rads = 5.0 ;

ডাবল টাইপের একটি পরিবর্তনশীল রেড ঘোষণা করা হয় এবং 5.0 এর মান দিয়ে বরাদ্দ করা হয়। এই ভেরিয়েবলটি সম্ভবত বৃত্তের ব্যাসার্ধের প্রতিনিধিত্ব করে।

দ্বিগুণ এলাকা = Circle_CArea ( rads ) ;

'Circle_Carea' নামের একটি ফাংশনকে একটি যুক্তি হিসাবে ব্যাসার্ধ রেডের সাথে বলা হয় এবং ফলাফলটি পরিবর্তনশীল এলাকায় সংরক্ষণ করা হয়।

printf ( 'বৃত্তের ক্ষেত্রফল হল: %.2f \n ' , এলাকা ) ;

ফলাফল 'printf' ব্যবহার করে কনসোলে প্রিন্ট করা হয়। 'বৃত্তের ক্ষেত্রফল হল: %.2f\n' স্ট্রিং হল একটি ফরম্যাট স্ট্রিং যার ক্ষেত্রফলের মানের জন্য একটি '%f' স্থানধারক রয়েছে। '%.2f'-এ '.2' উল্লেখ করে যে শুধুমাত্র দুটি দশমিক স্থান প্রদর্শন করা উচিত।

ফিরে 0 ;

মূল ফাংশনটি 0 রিটার্ন করে শেষ হয় যা অপারেটিং সিস্টেমে একটি সফল প্রোগ্রাম এক্সিকিউশন নির্দেশ করে।

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

আপনি আউটপুটে দেখতে পাচ্ছেন, বৃত্তের গণনাকৃত ক্ষেত্রফল হল 78.54 যা এলাকা = 3.14*5*5 = 78.54 এর গণনা। এলাকা গণনা করার ফাংশনটি 'circle.h' হেডার ফাইলে সংজ্ঞায়িত করা হয়েছে যা পরে বহিরাগত 'C' এর সাহায্যে C++ ফাইলে বলা হয়।

উপসংহার

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