[완료] 이게 도대체 어떤 구문인가요?

parrier의 이미지

struct baby
{
uint8 Ams:4;
uint8 Que:4;
uint8 Box;
};

이런 괴상한 구문을 보았습니다.
Mask라는 개념이 들어가는 것 같은데, 이것이 C 구문 맞나요?
아니면.. C++인가요?

처음보는 구문이라 생소하네요. 이것이 뭔지, 왜 쓰이는지 아시는 분은
답변 좀 부탁드려요.

skysign의 이미지

비트 필드인가... 코딩안한지 여러달 되니까...
헷갈리내염... - -;;
아마 비트 필드 맞을꺼에요.

cppig1995의 이미지

C의 문법으로서 비트필드 구조체(bit-field structure)라고 하는 것입니다. 흔히 사용되지는 않습니다.
일반적인 리틀 엔디언 아키텍쳐에서는 아마도 다음과 같이 배치될 확률이 가장 큽니다:

0100110001001001
^^^^^^^^****^^^^
Box     Que Ams

unsigned를 사용한 이유는 그래야 0~15라는 (아마도) 기대했던 범위를 얻을 수 있기 때문입니다.
그렇지 않으면 -8~7까지의 범위를 사용하게 됩니다. (사실, 그냥 int를 써도 비트필드 안에서는 unsigned로 취급됩니다.)

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

poonamu의 이미지

한 바이트의 메모리를 할당하고 PC 같은 리틀앤디안에서는 하위 4 bit를 Ams에 할당하고
상위 4 bit를 Que에 할당합니다.
총 구조체 Baby는 2바이트 구조체가 됩니다.

parrier의 이미지

감사합니다.^^~

-_-v