2009년 8월 17일 월요일

_ASSERTE macro

잘 알다시피, ASSERT는 너무나도 자주쓰는 Debug용 macro다. 이번에 소개할것은 ASSERT의 확장형인 ASSERTE 및

debugger's output 창에 assert 문구를 삽입하는것을 소개한다.

추가로, _CrtSetReportMode를 이용하여 File로 Log를 남길수도 있다. 자세한것은 MSDN 참고

#ifndef _MYASSERTE
#ifndef _CRT_SET_REPORT_MODE
#define _CRT_SET_REPORT_MODE
#define _MYASSERTE(expr) \
_CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_DEBUG|_CRTDBG_MODE_WNDW);\

(void) ((!!(expr)) || \
(1 != _CrtDbgReportW(_CRT_ASSERT, _CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(__FUNCTION__), _CRT_WIDE(#expr))) || \
(_CrtDbgBreak(), 0))
#else
#define _MYASSERTE(expr,msg) \\
(void) ((!!(expr)) || \
(1 != _CrtDbgReportW(_CRT_ASSERT, _CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(__FUNCTION__), _CRT_WIDE(#expr))) || \
(_CrtDbgBreak(), 0))
#endif
#endif

댓글 없음:

댓글 쓰기