जैसा कि हम जानते हैं कि मैक्रो का उपयोग सी या सी ++ में किया जाता है, लेकिन टाइप चेकिंग की कोई सुविधा नहीं है। मैक्रोज़ इसमें किसी भी प्रकार का तर्क ले सकते हैं। निम्नलिखित उदाहरण इस मामले को स्पष्ट रूप से दिखाएगा।
उदाहरण
#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