최근 주로 윈도우즈 응용 어플 프로젝트를 진행하면서 Visual C++에서 bool 형을 자주 쓰게 되었다.
그리고 익숙해진 컴파일 경고가 "성능경고"이다.
그때 마다 드는 생각이 "우씨! bool 이거 왜 있는 건데?" 였다.
마침 자주 들리는 블로그에서 이에 대한 글을 발견하였다.
"VC++에서 bool이 가지는 의미"
bool 1바이트 사용
BOOL 4바이트(int형) 사용
결론적으로 변수 자체의 공간은 bool이 BOOL과 비교하여 많이 절약되나 각종 비교 연산 및 논리연산에서 bool보다 BOOL이 더 적은 기계어 코드를 생산한다는 것이군요.
이것 또한 더 생각해 보면 bool 로 선언된 변수 자체는 많지 않고 코드상에서 해당 변수를 사용한 연산이 많은 곳에 분포되어 있다면 성능 뿐만 아니라 전체 공간 사용에 있어서도 결코 유리하다고 볼 수 없겠네요.
흠... C++에서 bool 형을 왜 추가한걸까? --; 이에 대한 궁금증은 위 문서에도 있지만 http://www.glenmccl.com/bool_cmp.htm 여기를 보시면 ...
결론적으로 C++의 함수 Overloading 개념을 적용하는 데 있어 기존 BOOL을 가지고는
void f(int i) {}
void f(BOOL b) {}
이 불가능하다는 것과 기존 BOOL이라는 타입이 갖고 있는 잠재된 문제점인
BOOL b = 37;
if(b == TRUE) // 0을 리턴할 것임 : fail.
을 개선하기 위한 것으로 보입니다.
Tags: bool type






