2010-10-03 9 views
11

नामस्थान के साथ काम करते समय, मुझे इसे अर्धविराम से खत्म करने की आवश्यकता है? जब मैंने किसी वर्ग के नामस्थान में आगे की घोषणा की, उदाहरण के लिए, कई लोगों में अर्धविराम शामिल नहीं होता है, लेकिन ऐसा लगता है कि यह वैकल्पिक है।नामस्थान में अर्धविराम। ज़रूरी?

क्या सेमीकॉलन कार्यक्षमता जोड़ता है या जोड़कर या हटाकर वर्तमान कार्यक्षमता को बदलता है?

धन्यवाद।

+1

क्या आप अपने मतलब के नमूनों को शामिल करने के लिए संपादित कर सकते हैं? –

उत्तर

13

यदि अर्धविराम वैकल्पिक है तो यह कार्यक्षमता में बदलाव नहीं करता है, अन्यथा यह आपको छोड़ देता है आपको एक वाक्यविन्यास त्रुटि मिल जाएगी।

namespace A { 
    class B; // forward declaration, semicolon is mandatory. 

    class B { 
    }; // class definition, semicolon is mandatory 

    class C { 
    } f(); // because otherwise it is a return type of a function. 
} // no need for semicolon 

namespace D = A; // semicolon is mandatory. 

यदि आप जिन मामलों के बारे में बात करते हैं, तो कृपया टिप्पणी करें।

+1

जब आप "अर्धविराम की कोई आवश्यकता नहीं" कहते हैं, तो सी ++ 03 में कोई अर्धविराम अवैध है। –

+1

@ चार्ल्स: क्या आप निश्चित हैं? सी ++ 0x और सी ++ 98 * सरल-घोषणा * में ~; '(सबकुछ चिह्नित * ऑप्ट *) में गिरावट हो सकती है। – ybungalobill

+1

हां, 7 [dcl.dcl] अनुच्छेद 3 की जांच करें। _simple-declaration_ में वैकल्पिक init-declarator-list केवल कक्षा या गणना की घोषणा करते समय छोड़ा जा सकता है ...। असल में, _init-declarator-list_ केवल तभी छोड़ा जा सकता है जब _decl-specifier-seq_ नहीं है। –

1

नहीं, आपको सेमी-कोलन के साथ "इसे खत्म करने" की आवश्यकता नहीं है। यह सामान्य अभ्यास नहीं है, न ही इसका कोई प्रभाव पड़ता है।

namespace foo 
{ 
    ... 
} // no semi-colon necessary here. 
5

नहीं। नामस्थान को अर्धविराम के साथ समाप्त होने की आवश्यकता नहीं है हालांकि Bjarne wanted to do it मुझे लगता है कि अन्य सी ++ संरचनाओं के साथ वाक्यविन्यास संबंधी विसंगतियों को कम करने का अनुमान है। हालांकि मुझे यकीन नहीं है कि यह क्यों स्वीकार नहीं किया गया था।

"बेवकूफ टाइपिंग त्रुटियों अनिवार्य रूप से की वाक्यात्मक समानता नाम स्थान निर्माणों ++ अन्य सेल्सियस के लिए निर्माण से पैदा होगा। मेरा प्रस्ताव है हम एक वैश्विक घोषणा के बाद एक वैकल्पिक अर्धविराम हताशा को कम करने के लिए अनुमति देते हैं। यह होगा खाली बयान से मेल खाने के लिए ' घोषणा' 'का एक प्रकार बनें। "

कक्षा की सभी आगे की घोषणाओं को अर्धविराम से समाप्त करने की आवश्यकता है। क्या आप सी ++ में वैकल्पिक कहां से उदाहरण दे सकते हैं?

+0

मुझे लगता है कि ब्रूस ईकल एक पृथक ब्लॉक के विचार को लागू करने के लिए अर्धविराम से समाप्त होने की अनुशंसा करता है – Killrazor

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