Jaki jest odpowiednik #region w C ++ dla C ++, więc mogę umieścić w kodzie niestandardowym zwijane bity i sprawić, że mój kod będzie trochę łatwiejszy do odczytania?
@ BjörnPollex, jest używany przez IDE, ale nie powinien kolidować ze składnią języka, a kompilator również musi to zaakceptować.
Darin Dimitrov
1
#region, o ile C # idzie, jest prawidłową składnią i wyznacza region kodu. Visual Studio pozwala je składać jako funkcję IDE.
Thanatos
10
nie można używać #region aby kod łatwiejsze do odczytania, #region sprawia, że łatwiej jest kod nie czytać.
jk.
Proponuję komentarz linii, po którym następuje instrukcja blokowa.
Grault
Odpowiedzi:
91
Kluczowe Region jest IDE specyficzne i wpływa renderowania w Visual Studio. Najbliższy odpowiednik to #pragma Region, który ma zastosowanie tylko do programu Visual Studio.
jeśli jest to tylko specyficzne dla IDE, czy powinienem się martwić kompilowaniem kodu #pragma region? Czy jest jakiś kompilator C, który temu zaprzecza? Czy są jakieś konsekwencje? Dzięki
Ramon Dias,
Właśnie sprawdzone przy użyciu Mingw. Użycie gcc -Wallwyświetla ostrzeżenia o nieznanych pragmatach. Na przykład: warning: ignoring #pragma region test [-Wunknown-pragmas]iwarning: ignoring #pragma endregion [-Wunknown-pragmas]
Ramon Dias,
28
Oprócz #pragma region… #pragma endregiondla programu Visual Studio wiele środowisk IDE obsługuje następującą składnię regionów w dowolnym języku z {}ograniczeniami i komentarzami //:
Właśnie próbowałem, ale nie działa (Visual Studio 2013 Community Edition)
Stefan Fabian,
Sugerowałbym dodanie nagłówka przed nawiasem otwierającym, aby po zwinięciu nadal można było zobaczyć nazwę (przynajmniej w większej liczbie kompilatorów).
Emad Y
12
W C ++ nie ma odpowiednika. Jednak środowiska IDE powinny mieć możliwość zwijania sekcji.
Możliwe jest również użycie czegoś takiego:
#pragmaregion#pragmaendregion A comment about the region.
Więc kiedy mówisz, nie ma takiego równoważne jesteś w błędzie, ponieważ #pragma regionjest dla wszystkich zamiarów i celów, jego funkcjonalny odpowiednik.
Dmitri Nesteruk
8
@DmitriNesteruk - nie, nie jest - nie, jeśli używasz dowolnego środowiska IDE innego niż Visual Studio. #regionjest zdefiniowany w specyfikacji, a środowiska IDE zgodne ze specyfikacją powinny zezwalać na zapadanie się regionów - nie można tego powiedzieć #pragma region.
Oded
9
Używałem
#ifndef ANY_NAME_FOR_THIS_REGION
...
#endif
na kilka projektów w ciągu ostatnich kilku lat i to mi odpowiada (w tym składane bloki). dodatkowo mogę wyłączyć blok za pomocą #define ANY_NAME_FOR_THIS_REGION tuż nad nim.
#if 1 jest jeszcze prostsze niż #ifndef, ale ... nie wymusza użycia symbolu do opisania celu tego regionu (nazwa następująca po #ifndef) - wiem, że możesz dodać komentarz do „#if 1” ”, ale nie jest zarządzany przez IDE. Szczerze mówiąc, nadal używam „#if 1..else..endif” tylko wtedy, gdy muszę wykonać tylko jeden z dwóch bloków kodu (jeden blok XOR drugi)
Drout
2
To tylko dodatek do innych odpowiedzi. Definicja regionu różni się od IDE do IDE.
W przypadku programowania na komputery Mac w Xcode możesz użyć pragmy:
#region
, o ile C # idzie, jest prawidłową składnią i wyznacza region kodu. Visual Studio pozwala je składać jako funkcję IDE.Odpowiedzi:
Kluczowe Region jest IDE specyficzne i wpływa renderowania w Visual Studio. Najbliższy odpowiednik to #pragma Region, który ma zastosowanie tylko do programu Visual Studio.
Przykład kodu z MSDN
// pragma_directives_region.cpp #pragma region Region_1 void Test() {} void Test2() {} void Test3() {} #pragma endregion Region_1 int main() {}
źródło
#pragma region
? Czy jest jakiś kompilator C, który temu zaprzecza? Czy są jakieś konsekwencje? DziękiMingw
. Użyciegcc -Wall
wyświetla ostrzeżenia o nieznanych pragmatach. Na przykład:warning: ignoring #pragma region test [-Wunknown-pragmas]
iwarning: ignoring #pragma endregion [-Wunknown-pragmas]
Oprócz
#pragma region
…#pragma endregion
dla programu Visual Studio wiele środowisk IDE obsługuje następującą składnię regionów w dowolnym języku z{}
ograniczeniami i komentarzami//
://{ Region header text. … //}
Godne uwagi przykłady to Code :: Blocks i FlashDevelop oraz każdy inny edytor, który używa komponentu edycyjnego Scintilla , taki jak Notepad ++ , Geany , Komodo Edit i wiele innych.
źródło
W C ++ nie ma odpowiednika. Jednak środowiska IDE powinny mieć możliwość zwijania sekcji.
Możliwe jest również użycie czegoś takiego:
#pragma region #pragma endregion A comment about the region.
Ale prawdopodobnie niezbyt przenośny
źródło
Nie ma odpowiednika. Ta
#region
funkcja jest częścią specyfikacji języka C #.C ++ nie ma takiego odpowiednika. Możesz to naśladować za pomocą specjalnie sformatowanych komentarzy, ale będzie to specyficzne dla edytora.
W przypadku programu Visual Studio możesz użyć:
#pragma region name ... #pragma endregion name
źródło
#pragma region
jest dla wszystkich zamiarów i celów, jego funkcjonalny odpowiednik.#region
jest zdefiniowany w specyfikacji, a środowiska IDE zgodne ze specyfikacją powinny zezwalać na zapadanie się regionów - nie można tego powiedzieć#pragma region
.Używałem
#ifndef ANY_NAME_FOR_THIS_REGION ... #endif
na kilka projektów w ciągu ostatnich kilku lat i to mi odpowiada (w tym składane bloki). dodatkowo mogę wyłączyć blok za pomocą #define ANY_NAME_FOR_THIS_REGION tuż nad nim.
źródło
To tylko dodatek do innych odpowiedzi. Definicja regionu różni się od IDE do IDE.
W przypadku programowania na komputery Mac w Xcode możesz użyć pragmy:
#pragma mark
źródło
C ++ Builder to obsługuje, ale musisz zadeklarować region jako:
#pragma region BLAH ..... #pragma end_region
Państwo musi użyć end_region dla C ++ Builder, ale to będzie działać, i to będzie zwinąć region!
źródło
Kate, KDevelop i wszystkie inne edytory tekstu i IDE, które używają Katepart obsługują oznaczanie regionów znacznikami
//BEGIN
i//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
Będziesz mógł zwinąć tak zdefiniowany region.
źródło
Nie ma odpowiednika.
Większość dobrych edytorów lub IDE pozwoli ci zwinąć funkcje, jeśli nie, to także
if
/else
/while
/for
/ etc.źródło
Pierwsza odpowiedź na to pytanie wymienia inną alternatywę. Nie ma to jednak zastosowania we wszystkich sytuacjach.
Metoda: zamiast tego użyj {...}, która natywnie obsługuje zwijanie kodu w programie Visual Studio.
Włącz opcję: Narzędzia -> Opcje -> Edytor tekstu -> C / C ++ -> Formatowanie -> Bloki instrukcji OutLine -> True.
Umieść swój w różnych zakresach {...}, a następnie zwinie kod w różnych zakresach:
źródło