WinCE에는 디버그 메시지를 찍는 매크로가 3가지 있다.
DEBUGMSG, RETAILMSG, ERRORMSG 이 3가지 매크로인데
매크로 구현은 NKDbgPrintfW api를 이용해서 구현하였다.
여기서 의문점이 하나 들것이다. NKDbgPrintfW를 이용해서 디버그 메시지를 출력하면 되는데 왜 3가지의 매크로를 만들어
놨을가? 그것은 디버그 메시지를 감추기 위해서이다.
디버그 메시지가 항상 출력되면 여러 이유로 좋지 않을때도 있다.(이유는 알아서...)
매크로의 원형과 어떤 경우에 매크로가 출력 되는지 알아보자.
1 . DEBUGMSG
이 매크로는 디버그 모드로 컴파일 했을때만 작동된다.
#define DEBUGMSG(cond,printf_exp) ((void)((cond)?(NKDbgPrintfW printf_exp),1:0))
2. RETAILMSG
릴리즈 모드, 디버그 모드 모두 작동한다.
#define RETAILMSG(cond,printf_exp) ((cond)?(NKDbgPrintfW printf_exp),1:0)
3. ERRORMSG
RETAILMSG 모드와 같이 어떤 모드에서도 작동하지만 출력의 형태가 다르다.
추가적으로 에러가 발생한 파일 경로와 이름, 라인 을 출력해 준다.
#define ERRORMSG(cond,printf_exp) ((cond)?(NKDbgPrintfW(TEXT("ERROR: %s line %d: "),TEXT(__FILE__),__LINE__), NKDbgPrintfW printf_exp),1:0)
그러면 여기서 또 하나의 의문이 들것이다. 의문이 들어야 맞다.
RETAILMSG, ERRORMSG 둘다 릴리즈 모드, 디버그 모드에서 출력이 되는데, 이러면 뭣하러 매크로를 만들어 놨을까?
그 이유는 Enable Ship Build 모드에 있다.
릴리즈 모드로 컴파일시 컴파일 옵션에 Enable Ship Build 모드가 있다.
이 모드를 체크하게 되면 위의 3가지 디버그 메시지가 찍히지 않는다.
이로써 디버그 메시지 없는 깔끔한 프로그램을 만들 수 있다. 배포용으로 쓰면 적당한가?
매크로의 사용법은 아래와 같다.
RETAILMSG(1, (_T("RetailMsg!!!rn")));
DEBUGMSG(1, (_T("DebugMsg!!!rn")));
ERRORMSG(1, (_T("ERRORMsg!!!rn")));
여기에서 1은 true를 말하는데, true면 디버그 메시지를 출력하고 0(false)면 출력 하지 않는다.
따로 if문을 두고 디버그 메시지를 출력할 필요가 없다는 것!
2번째 인자에서 ()는 꼭 해줘야 한다. 이유는 매크로 정의를 보면 알 수 있을것이다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
27 | MFC의 다각형 그리기 | pjk | 2014.05.24 | 16182 |
26 | 메모리 비트맵 | pjk | 2014.05.24 | 4373 |
25 | Visual Studio MFC에서 디버깅용 콘솔 창 띄우기 | pjk | 2014.05.24 | 8438 |
24 | 쓰레드 동기화 기법 | pjk | 2014.05.24 | 5006 |
23 | 선의 스타일과 색상 및 굵기 지정방법 | pjk | 2014.05.24 | 4743 |
22 | PictureControl 크기 구하기 | pjk | 2014.05.24 | 4395 |
21 | 체크박스가 선택되어 있는지 확인하는 GetCheck() | pjk | 2014.05.24 | 7671 |
20 | DC(Device Context) | pjk | 2014.05.24 | 5106 |
19 | 키보드 입력을 처리하기 | pjk | 2014.05.24 | 5229 |
18 | 양끝이 평평한 pen(펜)의 굵기와 색깔 지정해서 선 그리기 | pjk | 2014.05.26 | 4473 |
17 | 원의 중심과 반지름을 이용한 원 그리기 | pjk | 2014.05.30 | 7229 |
16 | 세 점을 지나는 원 (3 Point Circle) | pjk | 2014.06.05 | 11322 |
15 | SetPixel() 을 사용하여 원을 그리기... | pjk | 2014.06.05 | 10571 |
14 | 두점을 지나고 반지름을 알고있을 때 원의 중심점을 찾기 | pjk | 2014.06.09 | 8997 |
13 | MFC 대화상자 종료 메시지 호출 순서 | pjk | 2014.06.19 | 5488 |
12 | FindFirstFile() | pjk | 2014.07.18 | 5822 |
» | WinCE 디버그메시지 사용법(DEBUGMSG, RETAILMSG, ERRORMSG, NKDbgPrintfW) | pjk | 2014.07.21 | 5797 |
10 | 디렉토리(directory) 접근 C++ Win32 함수 총정리 | pjk | 2014.10.13 | 5049 |
9 | 윈도우 프로그래밍에서의 데이터 형 | pjk | 2014.10.13 | 5240 |
8 | WndProc | pjk | 2014.10.17 | 4065 |