ASSERT 와 VERIFY 매크로의 차이

Visual C++는 디버깅을 위해 ASSERTVERIFY 매크로가 존재합니다.

이 두개의 매크로는 개발하고 있는 프로그램의 디버그 모드에서만 쓰여지며, 어떠한 조건이 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 : 작성한 코드가 정상적으로 동작하는지 확인할 때 사용

zemna

Programmer/Web/Mobile/Desktop

You may also like...

Leave a Reply