প্রিপ্রসেসর ডিরেক্টিভ কম্পাইলারের জন্য নির্দেশনা যা আসল কম্পাইলেশন শুরু হওয়ার আগে তথ্য প্রিপ্রসেস করতে বলে। সব ডিরেক্টিভ # দিয়ে শুরু হয় এবং একই লাইনে শুধু হোয়াইটস্পেস থাকতে পারে। এগুলো C++ স্টেটমেন্ট নয়, তাই সেমিকোলন দিয়ে শেষ হয় না।
আপনি #include ডিরেক্টিভ দেখেছেন, যা হেডার ফাইল সোর্স ফাইলে অন্তর্ভুক্ত করে। C++-এ অন্যক্রমে #define, #if, #else, #line ইত্যাদি ডিরেক্টিভ রয়েছে। গুরুত্বপূর্ণ موارد নিচে:
#define প্রিপ্রসেসর
#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যদি DEBUG সংজ্ঞায়িত থাকে, তবে cerr স্টেটমেন্ট কম্পাইল হবে। #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 = 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