मेरे पास कुछ C ++ कोड है जो एक प्रिंट करता है size_t:
size_t a;
printf("%lu", a);
मैं 32- और 64-बिट आर्किटेक्चर दोनों पर चेतावनी के बिना संकलन करना चाहता हूं।
यदि यह C99 थे, तो मैं उपयोग कर सकता था printf("%z", a);। लेकिन AFAICT %zकिसी भी मानक C ++ बोली में मौजूद नहीं है। इसलिए इसके बजाय, मुझे करना होगा
printf("%lu", (unsigned long) a);
जो वास्तव में बदसूरत है।
यदि size_tभाषा में निर्मित मुद्रण के लिए कोई सुविधा नहीं है , तो मुझे आश्चर्य होता है कि क्या प्रिंटफ के रैपर या सोमेसच को लिखना संभव है, जो कि size_tएस पर उपयुक्त कलाकारों को सम्मिलित करेगा ताकि अच्छे लोगों को बनाए रखते हुए संयमी संकलक चेतावनी को समाप्त किया जा सके।
कोई विचार?
संपादित करें यह स्पष्ट करने के लिए कि मैं प्रिंटफ का उपयोग क्यों कर रहा हूं: मेरे पास अपेक्षाकृत बड़ा कोड आधार है जिसे मैं साफ कर रहा हूं। यह "एक चेतावनी लिखें, एक फ़ाइल में लॉग इन करें, और संभवतः एक त्रुटि के साथ कोड से बाहर निकलें" जैसी चीजों को करने के लिए प्रिंटफ़ रैपर का उपयोग करता है। मैं एक पर्याप्त आवरण के साथ ऐसा करने के लिए पर्याप्त C ++ - foo को सक्षम करने में सक्षम हो सकता हूं, लेकिन मैं केवल कुछ संकलक चेतावनियों से छुटकारा पाने के लिए कार्यक्रम में हर चेतावनी () कॉल को नहीं बदलूंगा।