2011-05-28 11 views
7

मैं जानना चाहता हूं कि एक अप्रयुक्त चर खराब क्यों है।अप्रयुक्त चर क्यों खराब हैं?

क्या ऐसा इसलिए है क्योंकि संकलक एक बड़ी बाइनरी बनाएगा? यदि हां, क्या कोई टूल/स्क्रिप्ट है जिसमें unused कीवर्ड या ऐसा कुछ जोड़ सकता है?

+5

क्योंकि अगर आप इसका इस्तेमाल नहीं करते हैं, वहाँ यह – Ibu

+0

@Ibu मैं क्योंकि मैं कुछ एपीआई जो का उपयोग चर का एक बहुत का उपयोग नहीं करते यह सवाल पूछते हो रही कोई मतलब नहीं है, और मैं वहाँ संख्या के प्रभावित था – klefevre

+0

वे अच्छे क्यों हैं? वे वहां क्या कर रहे हैं? – EJP

उत्तर

17

संकलक चीजें हैं जो संभावित एक समस्या या अनजाने में हो सकता है पर संकेत को चेतावनी आप देता है।

अप्रयुक्त चर को सबसे अधिक संभावना से अनुकूलित किया जाएगा। लेकिन शायद आप उनके साथ कुछ करने का इरादा रखते हैं - और उस स्थिति में संकलक मददगार रूप से नोट करता है कि आप ऐसा कुछ कर चुके हैं जिसे आप नहीं चाहते थे।

आपके द्वारा घोषित एक चर में उपयोग का क्या उपयोग है, लेकिन न तो पढ़ा जाता है और न ही लिखता है?

+0

ठीक है, मैंने सोचा कि बड़ी संख्या में अप्रयुक्त चर संकलन को प्रभावित कर सकता है। – klefevre

+0

प्रतीक तालिका में आवश्यक अधिक प्रविष्टियों के कारण संकलन के दौरान यह थोड़ा अधिक स्मृति ले सकता है, लेकिन इसके अलावा, मुझे लगता है कि आप कुछ भी ध्यान नहीं देंगे। – Joey

+0

+1 यह निश्चित रूप से सबसे अच्छा जवाब है। उदाहरण के लिए, कई बार मैंने एक अतिरिक्त इंडेक्स वैरिएबल 'जे' या' के' जोड़ा है लेकिन गलती से पिछले एक का पुन: उपयोग किया है, और कंपाइलर चेतावनी (जो आम तौर पर '-Werror' के कारण निर्माण रोकती है) मैं कोशिश करने से पहले बग को पकड़ता हूं कार्यक्रम चला रहा है। –

8

मेरी विनम्र राय में, अप्रयुक्त चर आपके कोड की पठनीयता को जटिल करते हैं। कोई फर्क नहीं पड़ता कि आप किस भाषा का उपयोग कर रहे हैं।

+0

अभी स्रोतों की जांच करके, उनमें से बहुत से, यह एकमात्र चेतावनी है जो मुझे मिलती है लेकिन विभिन्न हिस्सों में लगभग 4000 बार होती है। मुझे समझ में नहीं आता कि क्यों कई अप्रयुक्त चर घोषित करता है। –

8

क्योंकि ... नहीं है जब वहाँ जोड़ने के लिए छोड़ दिया है कुछ भी नहीं है, लेकिन जब वहाँ कुछ भी नहीं है दूर करने के लिए छोड़ दिया

पूर्णता तक पहुँच जाता है।

+2

'# शामिल int मुख्य() {printf (" सभी परीक्षण पास हुए \ n "); } '। इसे शिप करें ;- –

+1

@Steve: s/printf/puts/.. 4 वर्ण ('\ n' आवश्यक नहीं) पूर्णता के करीब ... –

+0

@ विलियम: सच है, हालांकि आम तौर पर मैं 'puts' का उपयोग नहीं करता, क्योंकि आम तौर पर मेरे कुछ आउटपुट स्वरूपण की आवश्यकता होती है और मैं लगातार सभी आउटपुट के लिए एक फ़ंक्शन का उपयोग करता हूं। आप बिल्कुल सही हैं कि इस मामले में लागू नहीं होता है, इसलिए 'puts' के खिलाफ एकमात्र तर्क यह है कि कभी-कभी स्पष्ट (लाइनब्रेक) अंतर्निहित से बेहतर होता है। उस मामले के लिए, आप व्हाइटस्पेस को भी हटा सकते हैं, हालांकि मुझे पूरा यकीन है कि चीजों में सुधार नहीं होगा ;-) –

संबंधित मुद्दे