स्ट्रिंगिफिकेशन ऑपरेटर # का उपयोग करके मैक्रो आर्गुमेंट को स्ट्रिंग लिटरल में बदलें।
उदाहरण
#include <stdio.h>
#define PRINT(x) printf(#x "\n")
int main() {
PRINT(Hello);
PRINT(26);
PRINT(2.354721);
PRINT(This is a test);
return 0;
}
आउटपुट
Hello 26 2.354721 This is a test
कैसे काम करता है
#xमैक्रो पैरामीटरxके टोकन्स को स्ट्रिंग लिटरल में बदल देता है।PRINT(Hello)→printf("Hello" "\n")→printf("Hello\n")(स्ट्रिंग लिटरल कन्केटिनेशन)।- व्हाइटस्पेस संरक्षित रहता है:
PRINT(Hello World)→"Hello World"।
उन्नत: एक्सप्रेशन प्रिंट करना
#define PRINT_EXPR(expr) printf(#expr " = %d\n", (expr))
int main() {
int a = 10, b = 20;
PRINT_EXPR(a + b); // "a + b = 30"
PRINT_EXPR(a * b); // "a * b = 200"
return 0;
}
सीमाएं
- केवल टोकन लेवल पर काम करता है - वेरिएबल का मान नहीं, उसका नाम प्रिंट होता है।
- कॉम्प्लेक्स एक्सप्रेशन्स के लिए
#exprसोर्स कोड जैसा दिखाता है। - डिबगिंग के लिए उपयोगी, उत्पादन लॉगिंग के लिए नहीं।