전처리기는 내가 소스를 만들면서 테스트하거나 소스를 편하게 보거나 편의성을 만들수있는 코드이다.
일단 아래 경로를 한번 읽어보자.
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/preprocessor-directives
여러가지 내용이 있는데 개인적으로 사용하는것 3가지 정도 밖에없다.
영역정의 , 기호정의 , 조건부컴파일 이정도가 되겠다.
우리가 프로그램을 계속 추가하고 하다보면 당연히 소스코드가 엄청 길어진다.
그런데 일일 내리면서 다보는게 쉽지는 않다.
그래서 디버깅이 힘들어지는 경우도 있다.
그림1을 보면 #region 과 #endregion 으로 소스를 한덩어리로 묶었다.
이경우 #region 앞쪽에 - 표시가 보이는데 저아이콘을 누르면 다음처럼 그림2와 같이 한부분이 숨겨진다.
앞쪽에 + 표시로 바뀐아이콘을 다시 누르면 원래대로 펼수 있다.
이런식으로 전체 소스중 구분할 내용들을 묶어주면 소스보기도 상대적으로 편해지고 원하는 부분도 빨리 찾을수 있을것이다.
그림3에 보면 단축키를 확인하고 설정할수 있다.
region 은 개요로 검색하되는데 '개요확장축소' 같은경우는 현재선택된 region 에 대해서 접었다 열었다하는 기능이고 전체개요 라고 되있는 부분은 현재 열려 있는 화면에 있는 region 전체를 열었다 닫았다 하는 기능이다.
사용방법은 위 그림3에 있는경우 Ctrl+M, Ctrl+X 라고 되있는데 이런경우는 컨트롤키를 누른채로 M 을 누르고 바로 이어서 컨트롤키와 X 를 누르면 해당동작이 실행된다.
여기서 개요는 꼭 region 하나에 대해서 작동하는건 아니고 좌측에 - 표시와 + 표시가 있는 부분들에 대해서 전부 동작하게 된다.
물론 단축키로 하지않고 +나 -아이콘을 직접눌러도 작동한다.
다음으로 define 과 if 를 살펴보자
쉽게 생각하면 define 는 변수를 정의하고 if에서 그 변수에따라 조건문을 만들수 있다 정도로 생각하면 되겠다.
그림4를 보면 using 위쪽 제일위에 #define 을 사용했다.
testdef 라는 변수가 있다고 정의 한것이다.
그리고 제일아래쪽에 보면 #if 로 해당 변수가 정의 되었는지 판별후에 한쪽분기만 타게 만들어놓았다.
저기서 만약 else 를 타게 만들고 싶으면 제일위쪽에 #define testdef 를 #define testdef_ 이런식으로 변경하여 testdef 가 정의되지 않게 만들거나 아래 #if testdef 를 #if testdef_ 로 변경하여 else 를 타고 가게 만들수도 있다.
그림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 |
댓글