আমরা জানি যে ম্যাক্রোগুলি C বা C++ তে ব্যবহার করা হয়, তবে টাইপ চেক করার কোন সুবিধা নেই। ম্যাক্রো এতে যেকোনো ধরনের যুক্তি নিতে পারে। নিম্নলিখিত উদাহরণটি এই কেসটিকে স্পষ্টভাবে দেখাবে৷
৷উদাহরণ
#include<stdio.h> #define INCREMENT(X) ++X main() { int x = 5; float y = 2.56; char z = 'A'; printf("Integer Increment: %d\n", INCREMENT(x)); printf("Float Increment: %f\n", INCREMENT(y)); printf("Character Increment: %c\n", INCREMENT(z)); }
আউটপুট
Integer Increment: 6 Float Increment: 3.560000 Character Increment: B
এটাই ম্যাক্রোর সমস্যা। C এর পরবর্তী সংস্করণে, আমরা '_Generic' কীওয়ার্ড ব্যবহার করে ম্যাক্রো ব্যবহার করতে পারি। এটি ব্যবহার করে আমরা বিভিন্ন ধরনের ডেটাটাইপ ব্যবহার করে ম্যাক্রোকে সংজ্ঞায়িত করতে পারি। আসুন একটি উদাহরণ দেখি।
উদাহরণ
#include<stdio.h> #define INCREMENT(X) _Generic( (X), char: X+10, int: X+1, float: X+2.5, default: 0) main() { int x = 5; float y = 2.56; char z = 'A'; printf("Integer Increment: %d\n", INCREMENT(x)); printf("Float Increment: %f\n", INCREMENT(y)); printf("Character Increment: %c\n", INCREMENT(z)); }
আউটপুট
Integer Increment: 6 Float Increment: 5.060000 Character Increment: K