निम्न उदाहरण में: -Wshadow मुद्दा एक चेतावनी के साथजीसीसी -Wshadow बहुत सख्त है?
class A
{
public:
int len();
void setLen(int len) { len_ = len; } // warning at this line
private:
int len_;
};
जीसीसी:
main.cpp:4: warning: declaration of `len' shadows a member of `this'
समारोह लेन और पूर्णांक लेन अलग प्रकार के हैं। चेतावनी क्यों?
अद्यतन
मैं देख रहा हूँ वहाँ एक विस्तृत cocensuse क्या "छाया" का मतलब है। और औपचारिक दृष्टिकोण से संकलक वास्तव में इसका अर्थ भी करता है।
हालांकि आईएमएचओ, ध्वज व्यावहारिक नहीं है। उदाहरण आमतौर पर इस्तेमाल किया सेटर/गेटर मुहावरा के लिए:
class A {
void prop(int prop); // setter
int prop() const; // getter
int prop;
};
यह अच्छा होगा अगर वहाँ एक चेतावनी झंडा कि मामले में चेतावनी जारी करेगा नहीं है, लेकिन इस मामले में चेतावनी देगा "पूर्णांक एक" पूर्णांक छुपाता है "हो जाएगा ए"।
जोड़ना-मेरी विरासत कोड मुद्दे पर चेतावनी कई चेतावनियां, जबकि समय-समय पर मुझे "छाया" समस्या के कारण कीड़े की खोज होती है।
मुझे कोई फर्क नहीं पड़ता कि इसे "-Wmuch_more_practical_and_interesting_shadow" या "-Wfoooooo" कहा जाएगा।
तो, अन्य जीसीसी चेतावनी ध्वज जो मैंने वर्णित किया है?
अद्यतन 2
इतना ही नहीं मुझे -Wshadow किसी भी तरह उपयोगी नहीं link text सोचता है। मैं अकेला नहीं हूं :) कम सख्त जांच अधिक उपयोगी हो सकती है।
आपका "आमतौर पर इस्तेमाल किया जाने वाला मुहावरे" कानूनी कोड भी नहीं है। –