কম্পিউটার

কিভাবে একটি প্রিপ্রসেসর C/C++ এ কাজ করে?


এখানে আমরা দেখব কিভাবে প্রিপ্রসেসরগুলো C বা C++ এ কাজ করছে। আসুন দেখি প্রিপ্রসেসর কি।

প্রি-প্রসেসর হল নির্দেশিকা, যা প্রকৃত সংকলন শুরু হওয়ার আগে কম্পাইলারকে তথ্য প্রিপ্রসেস করার নির্দেশনা দেয়।

সমস্ত প্রিপ্রসেসর নির্দেশিকা # দিয়ে শুরু হয় এবং একটি লাইনে একটি প্রিপ্রসেসর নির্দেশের আগে শুধুমাত্র সাদা-স্পেস অক্ষরগুলি উপস্থিত হতে পারে। প্রিপ্রসেসর নির্দেশাবলী C++ স্টেটমেন্ট নয়, তাই সেমিকোলনে শেষ হয় না (;)।

আপনি ইতিমধ্যেই একটি #অন্তর্ভুক্ত দেখেছেন৷ সমস্ত উদাহরণে নির্দেশিকা। এই ম্যাক্রোটি সোর্স ফাইলে একটি হেডার ফাইল অন্তর্ভুক্ত করতে ব্যবহৃত হয়।

#include, #define, #if, #else, #line ইত্যাদি C++ দ্বারা সমর্থিত প্রিপ্রসেসর নির্দেশিকা রয়েছে। আসুন আমরা গুরুত্বপূর্ণ নির্দেশাবলী দেখি −

#ডিফাইন প্রিপ্রসেসর

#define প্রিপ্রসেসর নির্দেশিকা প্রতীকী ধ্রুবক তৈরি করে। প্রতীকী ধ্রুবককে ম্যাক্রো বলা হয় এবং নির্দেশের সাধারণ রূপ হল −

#define macro-name replacement-text

উদাহরণ

#include <iostream>
using namespace std;
#define PI 3.14159
int main () {
   cout << "Value of PI :" << PI << endl;
   return 0;
}

আউটপুট

Value of PI :3.14159

শর্তগত সংকলন

বেশ কিছু নির্দেশনা আছে, যা আপনার প্রোগ্রামের সোর্স কোডের নির্বাচিত অংশগুলিকে কম্পাইল করতে ব্যবহার করা যেতে পারে৷ এই প্রক্রিয়াটিকে বলা হয় শর্তসাপেক্ষ সংকলন৷

শর্তসাপেক্ষ প্রিপ্রসেসর গঠন অনেকটা 'if' নির্বাচন কাঠামোর মতো। নিম্নলিখিত প্রিপ্রসেসর কোড বিবেচনা করুন -

#ifndef NULL
#define NULL 0
#endif
সংজ্ঞায়িত করুন

আপনি ডিবাগিং উদ্দেশ্যে একটি প্রোগ্রাম কম্পাইল করতে পারেন। আপনি নিম্নরূপ একটি একক ম্যাক্রো ব্যবহার করে ডিবাগিং চালু বা বন্ধ করতে পারেন -

#ifdef DEBUG
cerr <<"Variable x = " << x << endl;
#endif

এর ফলে cerr স্টেটমেন্ট প্রোগ্রামে কম্পাইল করা হয় যদি #ifdef DEBUG নির্দেশের আগে প্রতীকী ধ্রুবক DEBUG সংজ্ঞায়িত করা হয়। আপনি নিচের মত প্রোগ্রামের একটি অংশ মন্তব্য করতে #if 0 স্টেটমেন্ট ব্যবহার করতে পারেন -

#if 0
code prevented from compiling
#endif

উদাহরণ

#include <iostream>
using namespace std;
#define DEBUG
#define MIN(a,b) (((a)<(b)) ? a : b)
int main () {
   int i, j;
   i = 100;
   j = 30;
   #ifdef DEBUG
   cerr <<"Trace: Inside main function" << endl;
   #endif
   #if 0
      /* This is commented part */
      cout << MKSTR(HELLO C++) << endl;
   #endif
   cout <<"The minimum is " << MIN(i, j) << endl;
   #ifdef DEBUG
      cerr <<"Trace: Coming out of main function" << endl;
   #endif
   return 0;
}

আউটপুট

Trace: Inside main function
The minimum is 30
Trace: Coming out of main function

  1. একটি C/C++ স্ট্রিং একটি int কিনা তা কীভাবে পরীক্ষা করবেন?

  2. কিভাবে malloc() এবং free() C/C++ এ কাজ করে?

  3. লিনাক্সে C++ এর সেরা IDE কি?

  4. C++ এ # ডিফাইন প্রিপ্রসেসর কী?