assert함수는 언제 쓰나요?


OpenCV 튜토리얼중에 assert함수를 쓰는게 나와 있던데 어떻게 쓰는건지 궁금합니다

  • 2016년 02월 25일에 작성됨

조회수 255


1 답변


좋아요
0
싫어요
채택취소하기

assert는 인자가 false인 경우 프로그램을 종료시키기 위해 씁니다. 주로 디버깅할 때 주로 쓰이며, 예기치 못한 상황이 발생한 경우 에러 메세지를 부각시켜줍니다

사용예 :

length가 음수일때 프로그램 종료

assert(length >= 0);

위 코드에 메세지를 추가

assert(length >= 0 && "length가 음수라니!");

다르게 표현하면

assert(("length가 음수라니!", length >= 0));

주로 디버깅할 때 쓰이는 이유는, NDEBUG 매크로를 써서 릴리즈모드에서는 assert문을 evalute하지 않게 만들 수 있기 때문입니다. 그렇다고 해서 아무데나 남용해서는 안됩니다. 생각없이 assert()를 쓰면 예기치 못한 버그가 생길 수 있습니다. 가능한 시나리오는

// 릴리즈하면 x++가 실행되지 않습니다
assert(x++);

// 이쪽이 바른 코드
assert(x);    
x++;

// foo()가 어떻게 구현되 있느냐에 따라 안전할수도 있고 아닐수도 있습니다.
assert(foo());

// 이쪽이 좀 더 안전합니다.
int ret = foo();
assert(ret);
  • 2016년 02월 25일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close