[질문] C언 질문: 구조체 안에서 콜론의 역활
글쓴이: naisr00t / 작성시간: 목, 2005/01/13 - 10:47오전
리눅스에서의 소스는 아닙니다.
RTOS 분석 중에
처음 보는 구문이라서 질문을 드립니다.
대략 코드 템플릿만 따오면 다음과 같습니다.
1 2 3 4 struct test { 5 int t:4; 6 }; 7 8 int main(void) 9 { 10 struct test ss; 11 12 printf("Before test value = %d\n", ss.t); 13 ss.t = 2; 14 printf("After test value = %d\n", ss.t); 15 return 0; 16 }
실행 보면 첫 번째 값은 0이고, 두번 째값은 2 입니다.
질문은 구조체 안에 즉, 5번째 줄의 구문입니다.
실제 소스가 저렇게 되어 있습니다.
int t:4;: [콜론]의 의미는 무엇일까요?
그리고 표준 문법인가요?
일반 컴파일러도 지원 하는지요?
테스트할 때는 gcc로 했습니다.
Forums:
비트 필드
비트 필드입니다.
비트 필드가 사용되는 주된 이유는 메모리 절약에 있습니다.
젊음의 도전은 때로는 무모해야한다.
Re: 비트 필드는 뭐죠?
좀 더 자세히 부탁드려요?
비트필드
보통 unsigned 형을 사용하지만 int형을 사용하는경우는 최상위 비트를 부호비트로 쓰기위해서 사용이 됩니다.
여기서 t는 4비트만을 가지게 됩니다.
이소스로 확인해보시면서 하시면 이해가 가실겁니다.
젊음의 도전은 때로는 무모해야한다.
Re: 비트 필드
메모리 절약을 위해서 쓰기도 하지만... 하드웨어 레지스터 제어를 위해서 더 많이 쓰이는걸로 압니다...
하드웨어레지스터가 보통 32비트에서 어떤비트는 어떤용도로 쓰고... 또 어떤 비트는 어떤 용도로 쓰고... 비트별로 용도가 나누어져 있어서 위와같이 많이 씁니다...
만약 RTOS에서 저런 부분을 보셨다면... 아마도 하드웨어 레지스터나 network protocal이나... 그런 부분에 쓰였을 가능성이 높을 것 같습니다... :wink:
[code:1]#pragma pack(1)struc
음... 이렇게들 많이 쓰더군요...
댓글 달기