반응형
assert
assert 기존 함수는 조건이 false면 실행을 멈추어줍니다. 즉, 실행 중에 가정이 맞는 지 평가합니다. 오직 디버그 빌드에서만 동작합니다. 실패한 assert를 보려면 반드시 프로그램을 실행해야 합니다.
모든 코드 경로가 실행되었다고 어떻게 장담할 수 있을까요? 일부 가정은 프로그램을 실행하기도 전에 알 수 있습니다.모든 곳에 assert를 쓰는 것은 여전히 유효한 조언 중 하나입니다.
static_assert
컴파일 중에 가정을 평가합니다. 컴파일러가 assert 조건이 참인지 아닌지를 아는 것입니다. 실패하면 컴파일러는 컴파일 에러를 뱉습니다. 많은 경우에 유용합니다. C++11에서 선호하는 기능 중 하나입니다.
버전 확인, 배열의 길이, 메모리 크기 등을 검증할 떄 활용할 수 있습니다.
베스트 프랙티스
최대한 assert 보다 static_assert를 사용합니다. 모든 곳에 static assert를 씁니다. 그리고 모든 곳에 assert를 활용합니다.
assert를 사용한다면 여전피 프로그램을 실행시켜야 합니다. 실행 도중에만 가정을 포착합니다. 오직 디버그 빌드에서만 동작합니다.
static_assert를 사용한다면 컴파일 중에 모든 문제를 바로 알 수 있습니다. 또한 컴파일러처럼 생각하는 데도 큰 도움이 된다고 합니다.
반응형
'SW > C++' 카테고리의 다른 글
C++ : default 와 delete : 사용방법, 활용방법, 장점 (0) | 2020.04.08 |
---|---|
C++ : static_assert : 예제 및 활용 방법 : 참조용 (0) | 2020.04.07 |
C++ : auto : 반복자, 템플릿 : 사용해야 할 때, 방법 추천 (0) | 2020.04.05 |
C++ : auto : const 형 받기, 함수 반환형 받기 : 활용법, 주의사항, 팁 (0) | 2020.04.04 |
C++ : auto : 포인트 참조 및 받기 : 사용법, 주의점 (0) | 2020.04.03 |