C ++ के लिए # भाग का बराबर


84

C ++ के लिए #region के C ++ के बराबर क्या है, इसलिए मैं कस्टम कोड को संक्षिप्त रूप से बिट्स में डाल सकता हूं और अपने कोड को पढ़ना आसान बना सकता हूं?


14
यह भाषा के बजाय IDE की एक विशेषता है, है ना?
ब्योर्न पोलेक्स

4
@ BjörnPollex, यह आईडीई द्वारा उपयोग किया जाता है, लेकिन इसे भाषा सिंटैक्स के साथ संघर्ष नहीं करना चाहिए और संकलक को भी इसे स्वीकार करना चाहिए।
डारिन दिमित्रोव

1
#region, जहां तक ​​C # जाता है, वैध सिंटैक्स है और कोड का एक क्षेत्र बताता है। विजुअल स्टूडियो आपको आईडीई सुविधा के रूप में, उन्हें मोड़ने की अनुमति देता है।
थानाटोस 25'12

10
यदि आप अपने कोड को पढ़ने के लिए आसान बनाने के लिए #region उपयोग नहीं कर सकते #region आप कोड को आसान बना देता है नहीं पढ़ा।
जे.के.

मैं एक लाइन टिप्पणी के बाद एक ब्लॉक स्टेटमेंट का सुझाव देता हूं।
अंगूर

जवाबों:


91

क्षेत्र कीवर्ड आईडीई विशिष्ट है और दृश्य स्टूडियो में प्रतिपादन को प्रभावित करता है। निकटतम समकक्ष #pragma क्षेत्र है जो केवल विजुअल स्टूडियो के लिए लागू है।

MSDN से कोड उदाहरण

// pragma_directives_region.cpp
#pragma region Region_1
void Test() {}
void Test2() {}
void Test3() {}
#pragma endregion Region_1

int main() {}

यदि यह केवल आईडीई विशिष्ट है, तो मुझे एक कोड संकलित करने की चिंता करनी चाहिए #pragma region? क्या कोई सी कंपाइलर है जो इससे इनकार करता है? क्या इसका कोई परिणाम है? धन्यवाद
रेमन डायस

बस का उपयोग कर जाँच की Mingw। का उपयोग करते हुए gcc -Wall, अज्ञात चुभन के बारे में चेतावनी दिखाता है। जैसे: warning: ignoring #pragma region test [-Wunknown-pragmas]औरwarning: ignoring #pragma endregion [-Wunknown-pragmas]
रेमन डायस

28

विजुअल स्टूडियो के लिए #pragma region... के अलावा #pragma endregion, कई IDE किसी भी {}-delimited क्षेत्रों में निम्नलिखित वाक्यविन्यास का समर्थन करते //हैं:

//{ Region header text.//}

उल्लेखनीय उदाहरणों में कोड :: ब्लॉक और फ़्लैशडेवलप , और कोई भी अन्य संपादक जो सिंटिला एडिटिंग घटक का उपयोग करता है , जैसे कि नोटपैड ++ , गनी , कोमोडो एडिट और कई और।


क्या VS इसका समर्थन करता है?
दिमित्री नेस्टरुक

1
बस की कोशिश की, यह (विजुअल स्टूडियो 2013 सामुदायिक संस्करण) नहीं है
स्टीफन फैबियन

मैं शुरुआती ब्रेस से पहले हेडर जोड़ने का सुझाव दूंगा ताकि जब यह ढह जाए तो आप अभी भी नाम (कम से कम अधिक कंपाइलर में) देख पाएंगे।
Emad Y

12

C ++ में कोई समकक्ष नहीं है। हालाँकि IDE वर्गों को ध्वस्त करने में सक्षम होना चाहिए।

इस तरह से कुछ का उपयोग करना भी संभव है:

#pragma region

#pragma endregion A comment about the region.

लेकिन शायद बहुत पोर्टेबल नहीं है


10

कोई समकक्ष नहीं है। #regionसुविधा सी # विनिर्देश का हिस्सा है।

C ++ में ऐसा कोई समकक्ष नहीं है। आप संभवतः इसे विशेष रूप से स्वरूपित टिप्पणियों के साथ नकल कर सकते हैं, लेकिन यह संपादक विशिष्ट होगा।

विज़ुअल स्टूडियो के लिए आप उपयोग कर सकते हैं:

#pragma region name
...
#pragma endregion name

1
तो जब आप कहते हैं कि ऐसी कोई बराबर है आप गलत हैं क्योंकि #pragma region है सभी इरादों और मकसदों, इसकी कार्यात्मक समकक्ष के लिए,।
दिमित्री नेस्टरुक

8
@DmitriNesteruk - नहीं, यह नहीं है - यदि आप किसी भी आईडीई का उपयोग नहीं करते हैं जो विज़ुअल स्टूडियो नहीं है। #regionयह कल्पना और आईडीई में परिभाषित किया गया है जो कल्पना के अनुरूप है कि क्षेत्रों को ढहने देना चाहिए - इसके लिए नहीं कहा जा सकता है #pragma region
Oded

9

मैं उपयोग कर रहा हूं

#ifndef ANY_NAME_FOR_THIS_REGION
    ...
#endif

पिछले कुछ वर्षों के दौरान कई परियोजनाओं के लिए और मेरे अनुरूप (ब्लॉक सहित)। इसके अतिरिक्त, मैं इसके ऊपर #define any_NAME_FOR_THIS_REGION का उपयोग करके ब्लॉक को अक्षम कर सकता हूं।


1
#if 1 #ifndef की तुलना में और भी सरल है, लेकिन .. यह उस क्षेत्र के उद्देश्य का वर्णन करने के लिए एक प्रतीक के उपयोग को लागू नहीं करता है (#ifndef के बाद का नाम) - मुझे पता है कि आप "aif 1" के लिए टिप्पणी को रोक सकते हैं या जोड़ सकते हैं। ", लेकिन यह आईडीई द्वारा प्रबंधित नहीं है। ईमानदार होने के लिए, मैं अभी भी "#if 1..else..endif" का उपयोग करता हूं, जब मुझे कोड के दो ब्लॉकों में से एक को निष्पादित करने की आवश्यकता होती है (एक ब्लॉक XOR अन्य)
Drout

2

अन्य उत्तरों के लिए बस एक अतिरिक्त। क्षेत्र की परिभाषा आईडीई से आईडीई तक भिन्न होती है।

Xcode में मैक डेवलपमेंट के लिए आप एक प्राग्म का उपयोग कर सकते हैं:

#pragma mark

1

C ++ बिल्डर इसका समर्थन करता है , लेकिन आपको इस क्षेत्र की घोषणा करनी चाहिए:

#pragma region BLAH

.....

#pragma end_region

आपको C ++ बिल्डर के लिए end_region का उपयोग करना चाहिए , लेकिन यह काम करेगा , और यह क्षेत्र को ध्वस्त कर देगा !


0

केट, केडीवेल्ड और अन्य सभी टेक्स्ट एडिटर और आईडीई जो केटपार्ट का उपयोग करते हैं, अंकन वाले क्षेत्रों //BEGINऔर //ENDमार्करों का समर्थन करते हैं ।

// BEGIN GPT entity types
#define GPT_ENT_TYPE_UNUSED \
    {0x00000000,0x0000,0x0000,0x00,0x00,{0x00,0x00,0x00,0x00,0x00,0x00}}
#define GPT_ENT_TYPE_EFI \
    {0xc12a7328,0xf81f,0x11d2,0xba,0x4b,{0x00,0xa0,0xc9,0x3e,0xc9,0x3b}}
#define GPT_ENT_TYPE_MBR \
    {0x024dee41,0x33e7,0x11d3,0x9d,0x69,{0x00,0x08,0xc7,0x81,0xf3,0x9f}}
// END

आप इस तरह से परिभाषित क्षेत्र को गिराने में सक्षम होंगे।


-1

कोई समकक्ष नहीं है।

सबसे अच्छा संपादक या IDEs आप कार्यों पतन, अगर यह भी नहीं करने देगा if/ else/ while/ for/ आदि।


-2

इस प्रश्न के पहले उत्तर में एक अन्य विकल्प का उल्लेख है। यह सभी स्थितियों में लागू नहीं है, हालांकि।

विधि: उपयोग करें {...} इसके बजाय, जो मूल रूप से विज़ुअल स्टूडियो में कोड टकराने का समर्थन करता है।

  1. सक्षम विकल्प: उपकरण -> विकल्प -> पाठ संपादक -> C / C ++ -> स्वरूपण -> बाह्य विवरण ब्लॉक -> सत्य।

  2. अपने अलग-अलग स्कोप {...} में रखें, फिर यह अलग-अलग स्कोप में कोड को ढहाएगा

कोड कोड को संक्षिप्त करना उदाहरण


7
यह सभी कोड के साथ काम नहीं कर सकता है क्योंकि यह इस ब्लॉक के अंदर चर के लिए समस्याएँ पैदा करेगा
asami
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.