2008. 5. 16. 19:57
C 언어에서의 bool 타입
2008. 5. 16. 19:57 in 프로그래밍/C 언어
이전글에서 C와 C++에서의 bool 타입의 동작 대해서 글을 썼습니다.
이제 C언어에서의 bool 타입의 변천사에 대해서 써볼까 합니다.
C99 이전의 C 언어에서는 bool 타입(참과 거짓을 표현하는)이 존재하지 않았습니다.
따라서 프로그래머들은 다음과 같은 방법으로 bool 타입을 사용했습니다.
그러다가 C99에서 드디어 bool 타입이 등장하게 됩니다.
그런데 여기에서 문제가 발생하게 됩니다.
bool, true, false로 구성된 bool 타입을 C99에서 추가하려고 하니까.
기존에 위와 같은 식으로 bool 타입을 만들어서 사용하던 수많은 C 코드들에서
문제가 발생하게 된 겁니다.
그래서 C99에서는 boolean 타입으로 bool을 사용하지 못하고 _Bool을 만들었습니다.
음. 그런데 _Bool 보다는 bool이 보기에도 좋고, 타자수도 적죠.
그래서 C99에서는 stdbool.h 파일을 제공하기로 했습니다.
stdbool.h 파일에는 다음과 같이 bool 이 정의되어있습니다.
그럼 결론은 다음과 같습니다.
이제 C언어에서의 bool 타입의 변천사에 대해서 써볼까 합니다.
C99 이전의 C 언어에서는 bool 타입(참과 거짓을 표현하는)이 존재하지 않았습니다.
따라서 프로그래머들은 다음과 같은 방법으로 bool 타입을 사용했습니다.
typedef int bool
#define false 0
#define true 1
bool b;
b = true;
#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
#define true (_Bool)1
#define false (_Bool)0
그럼 결론은 다음과 같습니다.
- C99에서 드디어 C 언어에서도 bool 타입을 제공한다.
- C99에서 제공하는 boolean 타입의 지시어는 bool이 아닌 _Bool이다.
- 만약 C99 표준에서 제공하는 boolean 타입을 _Bool이 아닌 bool을 사용해서 사용하고 싶다면 <stdbool.h> 파일을 include해서 사용한다.