Loading...
2014. 9. 21. 10:54

2. Core - Assert.

assert 기능은 프로젝트 진행에 무척 자주 사용하는 기능이다. 그냥 단순히 log 기능이라고 해도 무방할 듯 하다. assert 기능의 구현은 크게 runtime과 compiletime으로 나뉘며 적당히 사용하면 되는데 매번 바뀌는 변수는 runtime으로 매번 체크 를 하고 한번 체크후 절대 바뀌지 않는것은 compiletime으로 체크 해서 매번 비교하는 부하를 없애주는데 의의가 있다. 이 작업을 하면서 살짝 삽질했던 dll 링크 관련 문제는 아래 링크 를 참조하면 된다. 기존 버전 작업에는 이 assert가 core 외부에 별도의 프로젝트로 했었는데 이번에 수정하면서 core쪽에 추가해 버렸다. 너무 세세하게 프로젝트를 나누다 보니 프로젝트가 너무 많아지고 그에따라 dll도 많아지고...그냥 그..

compile time assertion

중요한 안건은 두가지. runtime assert를 compile time assert로 대체. 이를 대체하면서 적절한 에러메세지 출력. 안전한 형변환을 위해 아래와 같이 만들었다고 생각해보자. #include // 안전한 형변환을 위해 선언. template To safe_reinterpret_cast(From from) { assert(sizeof(from)