প্রি-প্রসেসর হল নির্দেশিকা, যা প্রকৃত সংকলন শুরু হওয়ার আগে কম্পাইলারকে তথ্য প্রিপ্রসেস করার নির্দেশনা দেয়।
pAll প্রিপ্রসেসর নির্দেশিকা # দিয়ে শুরু হয়, এবং শুধুমাত্র সাদা-স্পেস অক্ষরগুলি একটি লাইনে একটি প্রিপ্রসেসর নির্দেশের আগে উপস্থিত হতে পারে। প্রিপ্রসেসর নির্দেশাবলী 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