C++로 게임 개발을 할 때 몇몇 사람들이 MFC를 사용하기로 결정했다. 늘 저는 ASSERT(), VERIFY(), TRACE() 매크로들의 유익함을 발견한다. 그래서 윈도우 플랫폼을 위한 어떤 프로젝트에서든지 작업할 수 있도록 자신의 버전을 만들기로 했다.


ASSERT()는 값이 0이면 실행을 멈추도록 하기 위해 매개 변수을 평가한다. 릴리즈 모드에서는 assert가 아무 것도 전개되지 않도록 해야한다.


VERIFY()는 릴리즈 모드에서 매개 변수를 전개하도록 되어 있는 것을 제외하고는 ASSERT()와 아주 유사하다.
ASSERT()는 어떠한 함수 호출도 포함되어 있지 않는 표현으로 사용되어야만 한다. 함수 호출을 포함하는 표현을 위해 VERIFY()를 사용해야만 하고 그렇게 해서 함수 호출은 릴리즈 모드에서도 보전된다.


TRACE()는 디버그 윈도우에 출력되는 것을 제외하고는 printf()의 대응물이다. 릴리즈 모드에서는 TRACE() 또한 아무것도 전개하면 안된다.


세 개의 매크로들 중 어떤 것도 릴리즈 모드에서 어떤 런타임 벌점을 의미하지 않는다. 그 매크로들은 미리 정의된 _DEBUG 매크로를 사용해서 디버그 모드와 릴리즈 모드 사이를 구별한다. 이것은 Microsoft Visual C++에 특정적이다. 만약 다른 몇몇 다른 컴파일러를 사용하고 있다면 적절한 매크로를 사용해야만 할 것이다. 


ASSERT(), VERIFY(), TRACE()를 지원하는데 필요한 두 파일이 있다. 그것은 debug.h와 debug.cpp이다. 프로젝트의 몇몇 메인 헤더에 debug.h를 추가해야만 한다. 그것은 자신 안에 어떤 파일도 포함하지 않기 때문에 순환 포함(recurrent inclusion)에 의해 더럽혀지지 않는다. 또한 프로젝트의 소스 파일에 debug.cpp를 더해야만 한다.


Discuss this article in the forums
Date this article was posted to GameDev.net: 7/23/2002
(Note that this date does not necessarily correspond to the date the article was written)

See Also: Sweet Snippets


원문 : http://www.gamedev.net/reference/articles/article1846.asp

'C/C++언어' 카테고리의 다른 글

쉬프트 연산과 곱셈  (0) 2008.03.26
[리눅스프로그래밍] makefile  (1) 2008.03.07
ASSERT(), VERIFY(), TRACE()  (0) 2008.03.04
템플릿 사용한 max 만들기  (0) 2008.03.03
<이클립스 디버그 방법>  (0) 2008.01.28
printf 문을 만들어보자  (0) 2008.01.28

+ Recent posts