2012-11-01 1 views
4

가능한 중복 :
C++ bitfield packing with boolsbfield는 비트 필드 정의에서 안전합니까?

는 비트 필드 정의 내 C++의 bool 키워드를 사용하는 것이 안전이 보장인가? 같은

뭔가 :

struct flags { 
    bool a : 1; 
    bool b : 1; 
} 
+2

일부 답변은 다음과 같습니다. [bool로 된 C++ 비트 필드] (http://stackoverflow.com/questions/308364/c-bitfield-packing-with-bools)가 도움이 될 수 있습니다. 왜 처음부터 그것을하고 싶습니까? –

답변

4

예. 실제로 얼마나 많은 비트가 있는지 알기위한 지침으로 sizeof(bool) * CHAR_BIT을 사용할 수 있습니다.

From C++98 , § 9.6.3

비트 필드는 정수 또는 열거 형 (3.9.1)를 가진다.

C++ 98에서 3.9.1.7

유형 부울, 문자, wchar_t를하고, 서명 및 부호없는 정수 유형의 집합 핵심이라고 유형을 §

C에서
5

++ 03 9.6 "비트 필드":

비트 필드는 정수 또는 열거 형 (3.9.1)을 가져야합니다. 평문 (명시 적으로 서명도 아니고 서명도 없음) char, short, int 또는 long 비트 필드가 부호가 있거나 부호가 없는지 여부는 구현 정의 된 입니다. bool 값은 0이 아닌 크기의 비트 필드에 성공적으로 저장할 수 있습니다. ...

true 또는 false 값이 bool 유형의 비트 필드 (1 비트 비트 필드 포함)에 저장되면 원래의 bool 값 및 비트 필드의 값 평등을 비교할 것이다. ...

3.9.1/7 "기본 유형"은 bool이 정수형임을 지정합니다.