द्वारा जाँच की जा करने के लिए, संकलक के बारे में प्रारूप स्ट्रिंग है कि इस्तेमाल किया जा रहा के अनुसार गलत तर्क चेतावनी देते हैं। उदाहरण के तौर पर नीचे दिया गया कोड एक त्रुटि संदेश प्राप्त करेगा जिसमें प्रारूप 3 तर्क निर्दिष्ट किए गए हैं लेकिन असल में आप केवल दो में पारित हुए हैं।printf() आवरण तर्क जीसीसी
printf("%d%d%d", 1, 2);
जब printf()
करने के लिए एक आवरण लेखन, कैसे आप इस क्षमता रखते हैं? फ़ंक्शन या मैक्रो का एक रूप वह होगा जो मैं सोच सकता हूं। लेकिन सरल पार्स भी स्वीकार्य हो सकते हैं।
एक प्रिंटफ रैपर लिखने के कुछ तरीके स्टैक ओवरफ्लो पर पाए जा सकते हैं। दो आम दृष्टिकोण using vprintf with varargs, और using __builtin_apply हैं। मैंने इन दो दृष्टिकोणों की कोशिश की है, कोई भी काम नहीं किया।
भयानक! यह पूरी तरह से काम करता है! – minghua
एक नोट यदि 'my_printf' एक वर्ग सदस्य है: तर्क संख्या में 1 जोड़ें। यह '__attribute__ बन जाएगा ((प्रारूप (printf, 3, 4)));' – minghua