본문 바로가기
[ Program ]/c#스터디

50. 전처리기 / 편의사항

by 관이119 2021. 10. 29.

전처리기는 내가 소스를 만들면서 테스트하거나 소스를 편하게 보거나 편의성을 만들수있는 코드이다.

일단 아래 경로를 한번 읽어보자.

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/preprocessor-directives

 

C# 전처리기 지시문

조건부 컴파일, 경고, null 허용 분석 등을 제어하는 다양한 C# 전처리기 지시문을 알아봅니다.

docs.microsoft.com

 

여러가지 내용이 있는데 개인적으로 사용하는것 3가지 정도 밖에없다.

영역정의 , 기호정의 , 조건부컴파일 이정도가 되겠다.

 

우리가 프로그램을 계속 추가하고 하다보면 당연히 소스코드가 엄청 길어진다.

그런데 일일 내리면서 다보는게 쉽지는 않다.

그래서 디버깅이 힘들어지는 경우도 있다.

 

 

그림1

 

그림1을 보면 #region 과 #endregion 으로 소스를 한덩어리로 묶었다.

이경우 #region 앞쪽에  - 표시가 보이는데 저아이콘을 누르면  다음처럼 그림2와 같이 한부분이 숨겨진다.

 

그림2

 

앞쪽에 + 표시로 바뀐아이콘을 다시 누르면 원래대로 펼수 있다.

이런식으로 전체 소스중 구분할 내용들을 묶어주면 소스보기도 상대적으로 편해지고 원하는 부분도 빨리 찾을수 있을것이다.

 

그림3

 

그림3에 보면 단축키를 확인하고 설정할수 있다. 

region 은 개요로 검색하되는데 '개요확장축소' 같은경우는 현재선택된 region 에 대해서 접었다 열었다하는 기능이고 전체개요 라고 되있는 부분은 현재 열려 있는 화면에 있는 region 전체를 열었다 닫았다 하는 기능이다.

사용방법은 위 그림3에 있는경우 Ctrl+M, Ctrl+X 라고 되있는데 이런경우는 컨트롤키를 누른채로 M 을 누르고 바로 이어서 컨트롤키와 X 를 누르면 해당동작이 실행된다.

여기서 개요는 꼭 region 하나에 대해서 작동하는건 아니고 좌측에 - 표시와 + 표시가 있는 부분들에 대해서 전부 동작하게 된다.

물론 단축키로 하지않고 +나 -아이콘을 직접눌러도 작동한다.

 

다음으로 define 과 if 를 살펴보자

쉽게 생각하면 define 는 변수를 정의하고 if에서 그 변수에따라 조건문을 만들수 있다 정도로 생각하면 되겠다.

 

그림4

 

그림4를 보면 using 위쪽 제일위에 #define 을 사용했다.

testdef 라는 변수가 있다고 정의 한것이다.

그리고 제일아래쪽에 보면 #if 로 해당 변수가 정의 되었는지 판별후에 한쪽분기만 타게 만들어놓았다.

저기서 만약 else 를 타게 만들고 싶으면 제일위쪽에 #define testdef 를 #define testdef_ 이런식으로 변경하여 testdef 가 정의되지 않게 만들거나 아래 #if testdef 를 #if testdef_ 로 변경하여 else 를 타고 가게 만들수도 있다.

 

 

 

그림5

 

그림5를 보면 다른 사용방법이 있는데 제일 위쪽에 Debug 로 빌드하게 하고 제일아래쪽에 #if DEBUG 로 체크하면 디버그로 빌드할때는 str 에 nn 이 들어갈것이고 release 로 빌드하면 str 에 mm 이 들어가게 된다.

 

 

***숙제 : 디버그와 릴리즈로 각자 빌드했을때 다른 텍스트를 출력하는 프로그램을 짜보자

'[ Program ] > c#스터디' 카테고리의 다른 글

52. 델리게이트  (0) 2022.02.05
51. 쓰레드1(Thread)  (0) 2022.02.04
49. 디버깅  (0) 2021.10.09
48. 계산기 만들기  (0) 2021.10.09
47. 유즈케이스  (0) 2021.10.09

댓글