যেমন আমরা জানি ম্যাক্রোস C বা C++-তে ব্যবহৃত হয়, কিন্তু টাইপ চেকিংয়ের কোনো সুবিধা নেই। ম্যাক্রোস যেকোনো টাইপের আর্গুমেন্ট নিতে পারে। নিচের উদাহরণটি বিষয়টি স্পষ্ট করবে।
উদাহরণ
#include#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#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