2008. 5. 16. 19:57

C 언어에서의 bool 타입

이전글에서 C와 C++에서의 bool 타입의 동작 대해서 글을 썼습니다.


이제 C언어에서의 bool 타입의 변천사에 대해서 써볼까 합니다.

C99 이전의 C 언어에서는 bool 타입(참과 거짓을 표현하는)이 존재하지 않았습니다.

따라서 프로그래머들은 다음과 같은 방법으로 bool 타입을 사용했습니다.
typedef int bool
#define false 0
#define true  1

bool b;
b = true;


그러다가 C99에서 드디어 bool 타입이 등장하게 됩니다.
그런데 여기에서 문제가 발생하게 됩니다.
bool, true, false로 구성된 bool 타입을 C99에서 추가하려고 하니까.
기존에 위와 같은 식으로 bool 타입을 만들어서 사용하던 수많은 C 코드들에서
문제가 발생하게 된 겁니다.

그래서 C99에서는 boolean 타입으로 bool을 사용하지 못하고 _Bool을 만들었습니다.

음. 그런데 _Bool 보다는 bool이 보기에도 좋고, 타자수도 적죠.


그래서 C99에서는 stdbool.h 파일을 제공하기로 했습니다.
stdbool.h 파일에는 다음과 같이 bool 이 정의되어있습니다.
typedef _Bool bool;
#define true   (_Bool)1
#define false (_Bool)0


그럼 결론은 다음과 같습니다.
  • C99에서 드디어 C 언어에서도 bool 타입을 제공한다.
  • C99에서 제공하는 boolean 타입의 지시어는 bool이 아닌 _Bool이다.
  • 만약 C99 표준에서 제공하는 boolean 타입을 _Bool이 아닌 bool을 사용해서 사용하고 싶다면 <stdbool.h> 파일을 include해서 사용한다.