কম্পিউটার

C-তে ম্যাক্রোর জন্য পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্ট


আমরা জানি যে আমরা সি-তে ফাংশনের জন্য পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্ট ব্যবহার করতে পারি। এর জন্য আমাদের উপবৃত্ত (...) ব্যবহার করতে হবে। একইভাবে ম্যাক্রোর জন্য, আমরা পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্ট ব্যবহার করতে পারি। এখানেও আমাদের উপবৃত্তাকার অন্তর্ভুক্ত করতে হবে, '__VA_ARGS__' পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্টগুলি পরিচালনা করতে ব্যবহৃত হয়। কনক্যাটেনেশন অপারেটর '##' ভেরিয়েবল আর্গুমেন্টগুলিকে সংযুক্ত করতে ব্যবহৃত হয়।

এই উদাহরণে, ম্যাক্রো প্রিন্টএফ() বা স্ক্যানফ() ফাংশনের মত পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্ট নেবে। এই ম্যাক্রোতে, আমরা ফাইলের নাম, লাইন নম্বর এবং ত্রুটি বার্তা প্রিন্ট করব। প্রথম যুক্তি জনসংযোগ হয়. এটি অগ্রাধিকার নির্ধারণ করতে ব্যবহৃত হয় যেমন এটি স্বাভাবিক তথ্য স্ট্রিং বা ত্রুটি কিনা

উদাহরণ

#include <stdio.h>
#define INFO 1
#define ERR 2
#define STD_OUT stdout
#define STD_ERR stderr
#define LOG_MESSAGE(pr, strm, msg, ...) do {\
   char *str;\
   if (pr == INFO)\
      str = "INFORMATION";\
   else if (pr == ERR)\
      str = "ERROR";\
      fprintf(strm, "[%s] : %s : %d : "msg" \n", \
      str, __FILE__, __LINE__, ##__VA_ARGS__);\
} while (0)
int main(void) {
   char *s = "Test String";
   LOG_MESSAGE(ERR, STD_ERR, "Unable to open the file"); //here normal message will be printed
   LOG_MESSAGE(INFO, STD_OUT, "%s is passed as argument", s); //pass string argument
   LOG_MESSAGE(INFO, STD_OUT, "%d + %d = %d", 14, 16, (14 + 16)); //Provide integer
}

আউটপুট

[ERROR] : D:\text.c : 21 : Unable to open the file
[INFORMATION] : D:\text.c : 23 : Test String is passed as argument
[INFORMATION] : D:\text.c : 25 : 14 + 16 = 30

  1. প্রদত্ত তির্যক দৈর্ঘ্য সহ ষড়ভুজের ক্ষেত্রফলের জন্য সি প্রোগ্রাম?

  2. ম্যাটপ্লটলিবে পরিবর্তনশীল দৈর্ঘ্যের ডেটা সহ বক্সপ্লট

  3. Python - পরিবর্তনশীল দৈর্ঘ্যের 1D তালিকাকে 2D তালিকায় রূপান্তর করুন

  4. পাইথনে কমান্ড লাইন এবং পরিবর্তনশীল আর্গুমেন্ট?