2016-06-03 3 views
5

는 다음을 정의한다 :1 비트 값을 할당하는 방법은 무엇입니까? 구조에서의 pthread 라이브러리를 읽기

struct ptw32_thread_t_ 
{ 
     .... 
     int implicit:1; 
     ...... 
}; 

나는 그것이 컴파일이 오류를 제공 오버플로 오류 플래그를 활성화 할당 모든 값으로 가치를 제공하는 방법 만 1 비트를 차지 이해 :

ptw32_thread_t *sp; 
sp = (ptw32_thread_t *) calloc (1, sizeof(ptw32_thread_t)); 
sp->implicit = 1; 

error: overflow in implicit constant conversion [-Werror=overflow] 
+5

서명하지 마십시오. 1- 비트 부호있는 2의 보수 정수는 -1과 0의 두 값만 보유 할 수 있습니다. 따라서 1은 오버플로 조건입니다. –

+0

@TomKarzes Thanks tom – Vineet1982

+0

@unwind 연결된 질문이 중복되지 않습니다. – fuz

답변

5

부호가있는 유형이므로 1 비트의 비트가 int 인 것은 좋지 않은 생각입니다. 당신은 서명 사용하는 경우, 당신은 단지 조금 이상한 0-1을 나타낼 수 1 비트를 사용하여 1를 나타낼 수 없습니다.

이 솔루션은 unsigned int implicit : 1 만드는 것입니다.

관련 문제