Conversation
assert()를 사용하여 손해보는 경우를 없도록 합니다.
|
좋은 제안 감사합니다. 그러면 기본적으로 여러 프로그래밍 컨테스트 환경에서는 NDEBUG 가 없는 환경이라 최대한 동일하게 맞추는 것이 필요할 것 같고, 일반적인 사용자들이 assert문이 의도한대로 동작하지 않아서 혼란을 초래할 수 있을것 같습니다. 덧붙여 개인적인 의견이라면 연산 시간이나 성능을 위해서 assert를 동작하지 않게 하기 위해서라면, |
|
네. assert 구문이 모두 제거된 상태로 컴파일됩니다. 하지만 다른 컨테스트 환경과 최대한 동일하게 맞추는 것이 목적이라면 NDEBUG를 사용하지 않는 것이 옳은 것 같습니다. |
실제 코드 작성에 있어서 assert 구문을 사용하는 것은 가독성 있는 코드를 만들고, 코드가 하고자 하는 바를 명시적으로 보여주기 때문에 가독성 있는 코드를 만들기 위해 자주 사용됩니다.
하지만 현재의 연산 시간을 중요시하는 PS의 특성 상 알고스팟에서는 assert를 이용해서 조건 체크하는 것이 비용이 되기 때문에 assert를 사용하는 것은 언제나 손해를 보게 합니다.
이런 상황을 막고자 컴파일 옵션에 NDEBUG를 추가할 것을 제안합니다.