assert함수는 언제 쓰나요?

조회수 8206회

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

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    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);
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)