मैं ऐसा कुछ करने में सक्षम होना चाहूंगा
#print "C Preprocessor got here!"
डिबगिंग उद्देश्यों के लिए। ऐसा करने का सबसे अच्छा / सबसे पोर्टेबल तरीका क्या है?
मैं ऐसा कुछ करने में सक्षम होना चाहूंगा
#print "C Preprocessor got here!"
डिबगिंग उद्देश्यों के लिए। ऐसा करने का सबसे अच्छा / सबसे पोर्टेबल तरीका क्या है?
जवाबों:
warningनिर्देश शायद निकटतम आप मिल जाएगा है, लेकिन यह पूरी तरह से मंच स्वतंत्र नहीं है:
#warning "C Preprocessor got here!"
AFAIK MSVC को छोड़कर अधिकांश कंपाइलरों पर काम करता है, जिस पर आपको एक pragmaनिर्देश का उपयोग करना होगा :
#pragma message ( "C Preprocessor got here!" )
#define WARNING(msg) _Pragma("message " #msg)
एक अन्य उपाय यह है कि टिप्पणियों का उपयोग करें और उन्हें संसाधित करने के लिए एक शेल स्क्रिप्ट का उपयोग करें। यह कुछ अनुशासन लेता है (या एक शेल स्क्रिप्ट जो टाइपोस को पकड़ता है)।
उदाहरण के लिए, मैं स्वरूपित टिप्पणियों को जोड़ता हूं //TODO और फिर एक शेल स्क्रिप्ट को जो उन सभी को एक रिपोर्ट में एकत्र करता है।
अधिक जटिल उपयोग के मामलों के लिए, आप अपने स्वयं के सरल प्रीप्रोसेसर लिखने की कोशिश कर सकते हैं। उदाहरण के लिए, आप अपने स्रोतों को *.c2फ़ाइलों के रूप में संपादित कर सकते हैं । सरल प्रीप्रोसेसर स्रोत को पढ़ेगा, उसकी खोज करेगा //TODOऔर printf("TODO ...")आउटपुट *.cफाइल में लिखेगा ।
आप नहीं कर सकते। C कोड से पहले प्रीप्रोसेसरों को संसाधित किया जाता है। स्क्रीन पर प्रिंट करने के लिए कोई प्रीप्रोसेसर निर्देश नहीं हैं, क्योंकि प्रीप्रोसेसर कोड निष्पादित नहीं किया गया है, इसका उपयोग सी कोड उत्पन्न करने के लिए किया जाता है जिसे निष्पादन योग्य कोड में संकलित किया जाएगा।
कुछ भी गलत:
#ifdef ...
printf("Hello");
#endif
क्योंकि यह सब आप कर सकते हैं जहां तक प्रीप्रोसेसर चलते हैं।
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"... मुझे कोशिश करनी होगी कि लेकिन वृत्ति मुझे बताती है कि उत्तर नहीं है।