কম্পিউটার টিউটোরিয়াল

C++ প্রিপ্রসেসর ডিরেক্টিভ: #define, শর্তাধীন কম্পাইলেশন

প্রিপ্রসেসর ডিরেক্টিভ কম্পাইলারের জন্য নির্দেশনা যা আসল কম্পাইলেশন শুরু হওয়ার আগে তথ্য প্রিপ্রসেস করতে বলে। সব ডিরেক্টিভ # দিয়ে শুরু হয় এবং একই লাইনে শুধু হোয়াইটস্পেস থাকতে পারে। এগুলো 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
  1. C++-এ reference_wrapper

  2. C++-এ এনক্যাপসুলেশন

  3. C++-এ #define এবং const কিওয়ার্ডের পার্থক্য

  4. C++-এ #define প্রিপ্রসেসর কী?