Visual C++는 디버깅을 위해 ASSERT와 VERIFY 매크로가 존재합니다.
이 두개의 매크로는 개발하고 있는 프로그램의 디버그 모드에서만 쓰여지며, 어떠한 조건이 true인지 false인지를 검사하는데 사용되고 만일 조건이 false라면 예외를 throw하게 됩니다.
그렇지만 이 두가지의 매크로는 릴리즈 버전의 프로그램을 빌드하는 과정에서 차이점을 보입니다.
ASSERT
- 릴리즈때 사용했었던 조건문과 함께 제거 됩니다.
VERIFY
- 릴리즈때 제거되지만, 사용했던 조건문은 그대로 남습니다.
아래의 샘플은 윈도우를 생성하는 코드를 ASSERT, VERIFY 매크로를 이용해서 처리한 코드입니다.
[code lang="cpp"]
ASSERT(this->create(CProject::IDD_Dialog, pParent));
this->ShowWindow(SW_NORMAL);
[/code]
or:
[code lang="cpp"]
VERIFY(this->create(CProject::IDD_Dialog, pParent));
this->ShowWindow(SW_NORMAL);
[/code]
만일 이 코드를 릴리즈 버전으로 빌드하게 되면 ASSERT 매크로로 처리한 코드는 윈도우가 절대 생성되지 않으며, VERIFY 매크로로 처리한 코드는 윈도우가 생성되는 것을 보실 수 있습니다.
그러므로 ASSERT 와 VERIFY는 아래와 같이 구분해서 사용하시면 됩니다.
ASSERT : 릴리즈 버전에서는 필요하지 않은 런타임시의 항목에 대한 정의 같은 것을 확인할 때 사용
VERIFY : 작성한 코드가 정상적으로 동작하는지 확인할 때 사용