किसी भी सी प्रोग्रामर है जो एक सप्ताह से अधिक के लिए काम कर रहा वास्तविक बहस की तुलना में अधिक प्रारूप विनिर्देशक साथ printf
कॉल करने से दुर्घटनाओं कि परिणाम का सामना किया है, जैसे:भी कई तर्क पासिंग printf को
printf("Gonna %s and %s, %s!", "crash", "burn");
हालांकि, कर रहे हैं वहाँ किसी भी ऐसी ही बुरी चीजें जो तब हो सकती हैं जब आप पास करते हैं printf के लिए तर्क?
printf("Gonna %s and %s!", "crash", "burn", "dude");
86/64 विधानसभा का मेरा ज्ञान, मुझे विश्वास है कि यह हानिरहित है, हालांकि मुझे विश्वास है वहाँ कुछ बढ़त हालत मैं याद कर रहा हूँ नहीं है कि नहीं कर रहा हूँ, और मैं अन्य आर्किटेक्चर के बारे में पता नहीं है। क्या यह स्थिति हानिरहित होने की गारंटी है, या यहां पर संभावित रूप से क्रैश-प्रेरक पतन भी है?
नहीं अपने प्रश्न का उत्तर, स्टेकर के सही है, लेकिन दुर्घटनाओं के लिए। 'gcc' को उस पर अच्छी चेतावनियां देनी चाहिए, इसलिए उसको अनदेखा करने के लिए वास्तव में कोई बहाना नहीं है ;-) –
जीसीसी इसके लिए चेतावनी कैसे दे सकता है? ध्यान दें कि प्रारूप स्ट्रिंग को लगातार स्ट्रिंग नहीं होना चाहिए। यह कोई 'char *' –
हो सकता है जीसीसी संकलन समय पर प्रारूप स्ट्रिंग को जान सकता है जब अच्छी चेतावनी दे सकता है। चूंकि यह 'printf' और दोस्तों के लिए तर्कसंगत उपयोग के मामलों के एक बड़े स्वार्थ का प्रतिनिधित्व करता है, इसलिए वे चेतावनियां मूल्यवान हैं और उन्हें ध्यान दिया जाना चाहिए। – RBerteig