2012-01-04 3 views
40

누구나 C에서 _Bool과 bool 데이터 유형의 차이점을 설명 할 수 있습니까? 예 :C에서 _Bool과 bool 유형의 차이점은 무엇입니까?

_Bool x = 1; 
    bool y = true; 

    printf("%d", x); 
    printf("%d", y); 
+1

'bool'도 반드시 typedef 여야합니다. C에는 해당 유형이 없습니다. –

+0

_Complex와 유사합니다. –

답변

87

이러한 데이터 형식은 C99에 첨가하고 1로 확장 매크로이다. bool은 C99보다 먼저 예약되어 있지 않으므로 예약 된 _Bool 키워드를 사용합니다.

boolstdbool.h을 포함하면 _Bool의 별명입니다. 기본적으로 stdbool.h 헤더를 포함하여 식별자가 bool 인 '예약 됨', 즉 코드가 자체 용도로 사용되지 않는다는 코드가 정상임을 나타내는 것입니다 (식별자 truefalse과 유사).

+4

+1 역사를 포함합니다. – Lindydancer

+18

장기적인 의도는 bool을 키워드로 만들기 위해 결국 표준이 개정 될 것으로 보입니다. 이 단계 1은 을 사용하여 bool 매크로를 가져올 수 있으며 여전히 악의적 인 목적으로 매크로를 정의 해제하거나 다시 정의 할 수 있습니다. 2 단계는 부울을 에서 정의 해제하거나 다시 정의하는 것을 거부하여 그러한 헛소리를 방지합니다. 그런 다음 3 단계는 bool에 _Bool과 같은 키워드를 사용하고 _Bool은 더 이상 사용되지 않는 것으로 표시합니다. 표준 길이의 긴 길 (예, 지금부터 10 년 또는 2 년 전) 표준 C 코드는 bool 유형을 가지며 새로운 프로그래머는 부울 유형이 없음을 알 수 없습니다. – tialaramex

+2

20 년이 걸리는 이유는 이해가 가지 않습니다. 이 변경이 마음에 들지 않는 코드는 현재 컴파일러 버전을 사용하여 컴파일 할 수 있습니다. –

13

차이는 없습니다.

bool_Bool에서 stdbool.h으로 확장되는 매크로입니다.

그리고 truestdbool.h

관련 문제