C ++의 #region에 해당


84

C ++ 용 #region에 해당하는 C ++는 무엇인가요? 맞춤 코드 축소 가능 비트를 입력하고 코드를 좀 더 읽기 쉽게 만들 수 있나요?


14
이것은 언어가 아니라 IDE의 기능입니다. 그렇지 않습니까?
Björn Pollex

4
@ BjörnPollex, IDE에서 사용되지만 언어 구문과 충돌해서는 안되며 컴파일러도이를 허용해야합니다.
Darin Dimitrov

1
#region, C #에 관한 한 유효한 구문이며 코드 영역을 설명합니다. Visual Studio를 사용하면 IDE 기능으로 접을 수 있습니다.
Thanatos

10
당신은 # 지역 쉽게 당신에게 코드를 만들고, 읽기 쉬운 코드를 만들 # 지역을 사용할 수 없습니다 읽어 보시기 바랍니다.
jk.

줄 주석 다음에 블록 문을 제안합니다.
Grault 2014 년

답변:


91

지역 키워드는 IDE 고유의 것입니다 및 Visual Studio에서 렌더링에 영향을 미칩니다. 가장 가까운 지역 은 Visual Studio에만 적용되는 #pragma 지역 입니다.

MSDN의 코드 예제

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

int main() {}

IDE 전용 인 경우 코드를 컴파일하는 것에 대해 걱정해야 #pragma region합니까? 그것을 거부하는 C 컴파일러가 있습니까? 결과가 전혀 없습니까? 감사합니다
Ramon Dias

을 사용하여 확인했습니다 Mingw. 를 사용하면 gcc -Wall알 수없는 pragma에 대한 경고가 표시됩니다. 좋아요 : warning: ignoring #pragma region test [-Wunknown-pragmas]그리고warning: ignoring #pragma endregion [-Wunknown-pragmas]
Ramon Dias

28

뿐만 아니라 #pragma region... #pragma endregion비주얼 스튜디오에 대한 많은 십오 어떤에서 지역에 대한 다음과 같은 구문 지원 {}-delimited, //해설되어 언어 :

//{ Region header text.//}

주목할만한 예에는 Code :: BlocksFlashDevelop , 그리고 Notepad ++ , Geany , Komodo Edit 등과 같은 Scintilla 편집 구성 요소 를 사용하는 기타 편집기가 포함됩니다 .


VS가 이것을 지원합니까?
Dmitri Nesteruk 2014 년

1
방금 시도했지만 그렇지 않습니다 (Visual Studio 2013 Community Edition)
Stefan Fabian

여는 중괄호 앞에 헤더를 추가하는 것이 좋습니다. 그래야 접혀도 이름을 볼 수 있습니다 (적어도 더 많은 컴파일러에서).
Emad Y

12

C ++에는 이에 상응하는 것이 없습니다. 그러나 IDE는 섹션을 축소 할 수 있어야합니다.

다음과 같은 것을 사용할 수도 있습니다.

#pragma region

#pragma endregion A comment about the region.

그러나 아마도 휴대 성이 좋지 않을 것입니다.


10

동등한 것은 없습니다. 이 #region기능 은 C # 사양의 일부입니다.

C ++에는 이와 같은 기능이 없습니다. 특별히 형식이 지정된 주석으로 모방 할 수 있지만 이것은 편집기에 따라 다릅니다.

Visual Studio의 경우 다음을 사용할 수 있습니다.

#pragma region name
...
#pragma endregion name

1
당신이 말할 때 그래서 그런 동등한 존재하지 때문에 잘못 #pragma region 입니다 모든 의도와 목적 동등한 기능을 위해.
Dmitri Nesteruk 2014 년

8
@DmitriNesteruk-아니요, 그렇지 않습니다. Visual Studio가 아닌 IDE를 사용하는 경우에는 그렇지 않습니다. #region사양에 정의되어 있으며 사양을 준수하는 IDE는 영역 축소를 허용해야합니다 #pragma region. 이는 .
Oded

9

나는 사용하고있다

#ifndef ANY_NAME_FOR_THIS_REGION
    ...
#endif

지난 몇 년 동안 여러 프로젝트에서 저에게 적합합니다 (접을 수있는 블록 포함). 또한 바로 위에있는 #define ANY_NAME_FOR_THIS_REGION을 사용하여 차단을 비활성화 할 수 있습니다.


1
#if 1은 #ifndef보다 더 간단하지만 .. 해당 영역의 목적을 설명하기 위해 기호를 사용하도록 강요하지 않습니다 (#ifndef 다음의 이름)- "#if 1에 주석을 추가하거나 추가 할 수 있습니다. "이지만 IDE에서 관리하지 않습니다. 솔직히 말해서 두 개의 코드 블록 중 하나만 실행해야 할 때 "#if 1..else..endif"를 사용합니다 (하나는 XOR 다른 블록)
Drout

2

다른 답변에 대한 추가 사항입니다. 지역 정의는 IDE마다 다릅니다.

Xcode 에서 Mac 개발의 경우 pragma를 사용할 수 있습니다.

#pragma mark

1

C ++ Builder 는이를 지원하지만 지역을 다음과 같이 선언해야합니다.

#pragma region BLAH

.....

#pragma end_region

당신은 해야한다 C ++ 빌더에 대한 end_region를 사용하지만, 그것은 것입니다 작동, 그것은 것입니다 지역을 축소!


0

Katepart 를 사용하는 Kate, KDevelop 및 기타 모든 텍스트 편집기 및 IDE 는 //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

동등한 것은 없습니다.

대부분의 좋은 편집기 나 IDE를 사용하면 if/ else/ while/ for/ 등이 아니라면 기능을 축소 할 수 있습니다 .


-2

이 질문 의 첫 번째 답변은 또 다른 대안을 언급합니다. 하지만 모든 상황에 적용되는 것은 아닙니다.

메서드 : 대신 Visual Studio에서 코드 축소를 기본적으로 지원하는 {...}를 사용합니다.

  1. 활성화 옵션 : 도구-> 옵션-> 텍스트 편집기-> C / C ++-> 서식-> 아웃 라인 문 블록-> True.

  2. 다른 범위 {...}에 넣으면 코드가 다른 범위로 축소됩니다.

범위가 지정된 코드 축소 예제


7
모든 코드에서 작동하지 않을 수 있습니다.이 블록 내의 변수에 대한 범위 지정 문제가 발생하기 때문입니다
asami dec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.