2008년 2월 3일 일요일

GCC(C언어) 에서 bool type 사용

최신 C99 스펙을 따르지 않는한 ANSI C 에서 bool type 을 사용할 수 없다. 하지만 C99 스펙을 따르고 있는 최신 GCC 에서는 bool type 을 사용할 수 있는데, #include 를 이용해서 bool type 과 true/false 키워드를 사용할 수 있다.실제로는 _Bool type 을 정의되어 있다. stdbool.h 를 자세히 들여다 보면 다음과 같다.

'A Reference Manual C 5th Ed.' 에 Boolean Type 에 대해서 다음과 같이 나와 있다.
C99 introduced the unsugned integer type _Bool, which can hold only the values 0 or 1 ("false" and "true", respectively). Other integer types can be used in boolean contexts (e.g., as the test in a conditional expression), but the use of _Bool may be clearer if the C implementation conforms to C99. When converting any scalar value to type _Bool, all nonzero values are converted to 1, while zero values are converted to 0.
The header file stdbool.h defines the macro bool to be a synonym for _Bool and defines false and true to be 0 and 1, respectively. The name bool is not a key-word to protec older C programs, which may have a user-defined type named bool. Conversions involving _Bool are described with the other integer conversions and promotions.



#ifndef __cplusplus

#define bool _Bool
#define true 1
#define false 0

#else /* __cplusplus */

/* Supporting in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true

#endif /* __cplusplus */



참고 : http://gcc.gnu.org/c99status.html