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);
댓글 입력