কম্পিউটার

সি-তে ম্যাক্রো এবং প্রিপ্রসেসর


সি প্রিপ্রসেসর কম্পাইলারের একটি অংশ নয়, তবে এটি সংকলন প্রক্রিয়ার একটি পৃথক ধাপ। সহজ কথায়, একটি সি প্রিপ্রসেসর হল একটি টেক্সট প্রতিস্থাপন টুল এবং এটি কম্পাইলারকে প্রকৃত সংকলনের আগে প্রয়োজনীয় প্রাক-প্রসেসিং করার নির্দেশ দেয়। আমরা C প্রিপ্রসেসরকে CPP হিসাবে উল্লেখ করব।

সমস্ত প্রিপ্রসেসর কমান্ড একটি হ্যাশ প্রতীক (#) দিয়ে শুরু হয়। এটি অবশ্যই প্রথম অখালি অক্ষর হতে হবে এবং পঠনযোগ্যতার জন্য, একটি প্রিপ্রসেসর নির্দেশিকা প্রথম কলামে শুরু হওয়া উচিত। নিম্নলিখিত বিভাগে সমস্ত গুরুত্বপূর্ণ প্রিপ্রসেসর নির্দেশিকাগুলি তালিকাভুক্ত করা হয়েছে -

Sr.No নির্দেশ ও বর্ণনা
1 #সংজ্ঞায়িত করুন
একটি প্রিপ্রসেসর ম্যাক্রো প্রতিস্থাপন করে।
2 #অন্তর্ভুক্ত
অন্য ফাইল থেকে একটি নির্দিষ্ট শিরোনাম সন্নিবেশ করান।
3 #undef
একটি প্রিপ্রসেসর ম্যাক্রোকে অসংজ্ঞায়িত করে।
4 #ifdef
এই ম্যাক্রো সংজ্ঞায়িত করা হলে সত্য প্রদান করে।
5 #ifndef
এই ম্যাক্রো সংজ্ঞায়িত না হলে সত্য প্রদান করে।
6 #if
একটি কম্পাইল সময়ের শর্ত সত্য কিনা পরীক্ষা করে।
7 #আরো
#if এর বিকল্প।
8 #elif
#else এবং #if এক বিবৃতিতে।
9 #endif
শর্তসাপেক্ষে প্রিপ্রসেসর শেষ হয়।
10 #ত্রুটি
stderr এ ত্রুটি বার্তা প্রিন্ট করে।
11 #pragma
একটি প্রমিত পদ্ধতি ব্যবহার করে কম্পাইলারকে বিশেষ কমান্ড ইস্যু করে।

প্রিপ্রসেসরের কিছু উদাহরণ -

বিভিন্ন নির্দেশাবলী বোঝার জন্য নিম্নলিখিত উদাহরণগুলি বিশ্লেষণ করুন৷

#define MAX_ARRAY_LENGTH 20

এই নির্দেশিকাটি CPP-কে MAX_ARRAY_LENGTH-এর দৃষ্টান্তগুলিকে 20 দিয়ে প্রতিস্থাপন করতে বলে৷ পঠনযোগ্যতা বাড়াতে ধ্রুবকের জন্য #define ব্যবহার করুন৷

#include <stdio.h>
#include "myheader.h"

এই নির্দেশাবলী CPP কে সিস্টেম লাইব্রেরি থেকে stdio.h পেতে বলে এবং বর্তমান উৎস ফাইলে পাঠ্য যোগ করুন। পরবর্তী লাইন CPP কে myheader.h পেতে বলে স্থানীয় ডিরেক্টরি থেকে এবং বর্তমান উৎস ফাইলে বিষয়বস্তু যোগ করুন।

#undef FILE_SIZE
#define FILE_SIZE 42

এটি CPP কে বিদ্যমান FILE_SIZE কে অসংজ্ঞায়িত করতে এবং এটিকে 42 হিসাবে সংজ্ঞায়িত করতে বলে৷

#ifndef MESSAGE
#define MESSAGE "You wish!"
#endif

এটি CPP কে বার্তা সংজ্ঞায়িত করতে বলে শুধুমাত্র যদি MESSAGE ইতিমধ্যে সংজ্ঞায়িত না থাকে৷

#ifdef DEBUG
/* Your debugging statements here */
#endif

এটি সিপিপিকে DEBUG সংজ্ঞায়িত করা থাকলে সংযুক্ত বিবৃতিগুলি প্রক্রিয়া করতে বলে৷ আপনি যদি সংকলনের সময় gcc কম্পাইলারে -DDEBUG পতাকা পাস করেন তবে এটি কার্যকর। এটি ডিবাগকে সংজ্ঞায়িত করবে, যাতে আপনি সংকলনের সময় ফ্লাইতে ডিবাগিং চালু এবং বন্ধ করতে পারেন।

পূর্বনির্ধারিত ম্যাক্রো -

ANSI C অনেকগুলো ম্যাক্রো সংজ্ঞায়িত করে। যদিও প্রতিটি প্রোগ্রামিং-এ ব্যবহারের জন্য উপলব্ধ, পূর্বনির্ধারিত ম্যাক্রো সরাসরি পরিবর্তন করা উচিত নয়।

Sr. No ম্যাক্রো এবং বর্ণনা
1 __DATE__
"MMM DD YYYY" বিন্যাসে একটি অক্ষর আক্ষরিক হিসাবে বর্তমান তারিখ।
2 __TIME__
"HH:MM:SS" বিন্যাসে একটি অক্ষর আক্ষরিক হিসাবে বর্তমান সময়।
3 __FILE__
এটি একটি স্ট্রিং আক্ষরিক হিসাবে বর্তমান ফাইলের নাম রয়েছে।
4 __LINE__
এটি একটি দশমিক ধ্রুবক হিসাবে বর্তমান লাইন সংখ্যা ধারণ করে।
5 __STDC__
1 হিসাবে সংজ্ঞায়িত করা হয় যখন কম্পাইলার ANSI মান মেনে চলে।

উদাহরণ

#include <stdio.h>
int main() {
   printf("File :%s\n", __FILE__ );
   printf("Date :%s\n", __DATE__ );
   printf("Time :%s\n", __TIME__ );
   printf("Line :%d\n", __LINE__ );
   printf("ANSI :%d\n", __STDC__ );
}

আউটপুট

File :test.c
Date :Jun 2 2012
Time :03:36:24
Line :8
ANSI :1

  1. কিভাবে একটি C++ প্রোগ্রাম সম্পাদনা, কম্পাইল এবং এক্সিকিউট করবেন?

  2. C++ এ #define এবং const কীওয়ার্ডের মধ্যে পার্থক্য কী?

  3. মাইক্রোসফ্ট এক্সেলে কীভাবে ম্যাক্রো তৈরি এবং চালানো যায়

  4. পাইথনে 3 এবং 7