Preprocessor Directives: #define, #ifdef, #endif

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference) Mathematical Constants এবং Macros (গাণিতিক ধ্রুবক এবং ম্যাক্রোস) |
239
239

Preprocessor Directives: #define, #ifdef, #endif

সি প্রোগ্রামিংয়ে Preprocessor Directives বিশেষ নির্দেশিকা যা প্রোগ্রাম কম্পাইল হওয়ার আগে প্রোগ্রামের কোডে পরিবর্তন বা প্রসেসিং করে। এগুলো প্রোগ্রাম কম্পাইলার দ্বারা সরাসরি প্রক্রিয়া করা হয় এবং সাধারণত # চিহ্ন দ্বারা চিহ্নিত হয়। Preprocessor Directives কম্পাইলেশন শুরু হওয়ার আগে কিছু নির্দেশনা প্রদান করে, যেমন ম্যাক্রো ডিফিনিশন, কন্ডিশনাল কম্পাইলেশন, এবং ফাইল ইনক্লুড।

এখানে #define, #ifdef, এবং #endif এর ব্যবহার বিস্তারিতভাবে আলোচনা করা হয়েছে।


১. #define – ম্যাক্রো ডিফিনিশন

#define প্রিপ্রসেসর ডিরেকটিভটি একটি কনস্ট্যান্ট মান বা এক্সপ্রেশনকে একটি সিম্বোলিক নামের সাথে যুক্ত করতে ব্যবহৃত হয়। এটি ম্যাক্রো ডিফিনিশন হিসেবেও কাজ করে, যেখানে আপনি একটি এক্সপ্রেশনকে একটি নাম দিয়ে রিপ্লেস করতে পারেন।

সিঙ্কট্যাক্স:

#define NAME value

এখানে NAME হলো একটি সিম্বোলিক নাম এবং value হলো তার মান বা এক্সপ্রেশন যা প্রোগ্রাম চলাকালে ব্যবহার হবে।

উদাহরণ:

#include <stdio.h>
#define PI 3.14159

int main() {
    printf("The value of PI is: %.5f\n", PI);
    return 0;
}

এখানে #define ডিরেকটিভটি PI নামক একটি কনস্ট্যান্টকে 3.14159 দিয়ে ডিফাইন করেছে। যখনই কোডে PI ব্যবহার করা হবে, এটি 3.14159 দ্বারা রিপ্লেস হবে।


২. #ifdef – কন্ডিশনাল কম্পাইলেশন শুরু

#ifdef (if defined) ফাংশনটি কন্ডিশনাল কম্পাইলেশন চালাতে ব্যবহৃত হয়, যা পরীক্ষা করে যে কোনো নির্দিষ্ট ম্যাক্রো ডিফাইন করা হয়েছে কিনা। যদি ডিফাইন করা থাকে, তাহলে কোডের ঐ অংশটি কম্পাইল করা হবে, অন্যথায় কম্পাইল করা হবে না।

সিঙ্কট্যাক্স:

#ifdef MACRO_NAME
    // কোড
#endif

উদাহরণ:

#include <stdio.h>
#define DEBUG

int main() {
    #ifdef DEBUG
        printf("Debugging is enabled.\n");
    #endif

    printf("Program is running.\n");
    return 0;
}

এখানে #ifdef DEBUG চেক করবে যে DEBUG ম্যাক্রো ডিফাইন করা হয়েছে কিনা। যদি DEBUG ডিফাইন করা থাকে, তবে printf("Debugging is enabled.") কমান্ডটি চলবে।


৩. #endif – কন্ডিশনাল কম্পাইলেশন শেষ

#endif ডিরেকটিভটি #ifdef, #ifndef, বা #if ব্লকের শেষে ব্যবহার করা হয় এবং এটি কন্ডিশনাল কম্পাইলেশন ব্লকটি শেষ করে।

সিঙ্কট্যাক্স:

#ifdef MACRO_NAME
    // কোড
#endif

এটি #ifdef বা #if এর সাথে ব্যবহৃত হয়, এবং কম্পাইলারকে কন্ডিশনাল কোড ব্লকের শেষের সংকেত দেয়।


একটি উদাহরণ সহ ব্যবহার:

#include <stdio.h>

#define DEBUG

int main() {
    #ifdef DEBUG
        printf("Debugging mode is enabled.\n");
    #endif

    printf("Program is running.\n");

    #ifndef RELEASE
        printf("Release mode is not enabled.\n");
    #endif

    return 0;
}

ব্যাখ্যা:

  • #ifdef DEBUG: যদি DEBUG ম্যাক্রো ডিফাইন করা থাকে, তবে Debugging mode is enabled. মেসেজটি প্রিন্ট হবে।
  • #ifndef RELEASE: যদি RELEASE ম্যাক্রো ডিফাইন না করা থাকে, তবে Release mode is not enabled. মেসেজটি প্রিন্ট হবে।

এখানে #define DEBUG দ্বারা DEBUG ম্যাক্রো ডিফাইন করা হয়েছে, ফলে #ifdef DEBUG ব্লকের ভিতরের কোড কম্পাইল হবে।


#define, #ifdef, এবং #endif এর মূল সুবিধা:

  1. কন্ডিশনাল কম্পাইলেশন: আপনি নির্দিষ্ট কোড ব্লকগুলো বিভিন্ন পরিবেশে (যেমন ডিবাগ মোডে বা রিলিজ মোডে) চালু বা বন্ধ করতে পারেন। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণ সহজ করে।
  2. ডিবাগিং সহজতর করা: #ifdef DEBUG দ্বারা কোডের ডিবাগিং অংশগুলো নির্দিষ্টভাবে চালু বা বন্ধ করা যায়।
  3. ফ্লেক্সিবল কোড লেখা: #define ব্যবহার করে আপনি কনস্ট্যান্ট ডিফাইন করতে পারেন, যা কোডের অন্য অংশে একই মান ব্যবহার করতে সহায়ক।

সারসংক্ষেপ:

ডিরেকটিভকাজ
#defineএকটি সিম্বোলিক নামকে একটি মান বা এক্সপ্রেশন দিয়ে ডিফাইন করা।
#ifdefনির্দিষ্ট ম্যাক্রো ডিফাইন করা থাকলে কোড চালানোর জন্য ব্যবহৃত হয়।
#endifকন্ডিশনাল কম্পাইলেশন ব্লকটির শেষ।

এই Preprocessor Directives গুলি সি প্রোগ্রামে কন্ডিশনাল কোড, ডিবাগিং এবং অন্যান্য ফিচারগুলো কার্যকরভাবে পরিচালনা করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion