! अस्वीकरण!: कृपया ध्यान दें कि मैं अनगिनत घोषणाओं के बारे में बात कर रहा हूं। मुझे पता है कि यह एक संभावित रूप से अनौपचारिक शब्द है और इसका मतलब यह है कि घोषणा एक टाइपिफ़ नहीं है और यह अज्ञात प्रकार की वस्तु घोषित नहीं करता है। इन मामलों में सब कुछ स्पष्ट है।गुमनाम खाली अनगिनत वर्ग, structs, यूनियन, और enums
प्रश्न 1:
जो निम्न में से एक अच्छी तरह से गठित सी ++ प्रोग्राम है? (बहुविकल्पी)
//One
int main(){
struct{}; //or class{}; should be the same
}
//Two
int main(){
enum{};
}
//Three
int main(){
union{};
}
टिप्पणी:
MSVC9.0 तीनों स्वीकार करता है। नंबर एक पर यह एक चेतावनी देता है। संख्या दो और तीन पर हमें 0 त्रुटियां और 0 चेतावनियां मिलती हैं। ऑनलाइन आउटल केवल संख्या तीन स्वीकार करता है, संख्या एक और दो नैदानिक संदेश के साथ संकलित करने में विफल रहते हैं "घोषणा कुछ भी घोषित नहीं करती है"। यदि, दो नंबरों में, अनाम गणना में कम से कम एक गणनाकर्ता होता है, तो नंबर दो को आउटलो कंपाइलर द्वारा सही तरीके से स्वीकार किया जाता है।
यदि आउटल कंपाइलर सही है, और यह मानक व्यवहार है, तो मुझे इसमें कुछ असंगतता दिखाई देती है। मैं समझ सकता हूं कि क्यों नंबर एक को खारिज कर दिया जाना चाहिए। मैं यह भी समझूंगा कि नंबर दो को क्यों खारिज कर दिया जाना चाहिए (कुछ भी घोषित नहीं किया जाना चाहिए), लेकिन इस मामले में नंबर तीन को भी खारिज कर दिया जाना चाहिए। और यदि नंबर तीन को खारिज नहीं किया जाना चाहिए, तो केवल एक ही अंतर जो मैं नंबर एक के साथ देखता हूं वह यह है कि एक अनौपचारिक संघ के सदस्यों का दायरा बाहरी दायरा है। लेकिन यह भी enums के साथ मामला है, इसलिए, मेरा दावा यह है कि संख्या तीन स्वीकार किया जाना चाहिए तो नंबर दो होना चाहिए।
प्रश्न 2:
तो comeau सही है, क्या विचार मैं अपने ऊपर फैसले में याद आ रही है?
पीएस मैंने आउराउ समर्थन के लिए एक ईमेल लिखा है। जैसे ही मैं इसे प्राप्त करता हूं, मैं उनका उत्तर पोस्ट करूंगा।
'enum {}; 'के लिए एक वास्तविक उदाहरण के साथ, कम नहीं! मैं इस तरह के एक wannabe भाषा वकील हूँ। – Cubbi