요즘은 안 쓰인다고 하지만 예전에 메모리가 귀하던 시절에는 메모리를 조금이라도 아끼기 위해서 사용되었다고 한다.
1 2 3 4 5 6 7 8 9 | typedef struct { char a:1; char b:1; char c:1; char d:1; } _t_TestBit; |
이렇게 비트필드 구조체를 작성하고 sizeof로 크기를 찍어보면 1바이트가 나온다.
1 2 3 4 5 6 7 8 9 | typedef struct { char a:2; char b:2; char c:2; char d:3; } _t_TestBit; |
이렇게 비트필드 구조체를 작성하고 sizeof로 크기를 찍어보면 2바이트가 나온다. (2,2,2,2)로 작성하면 1바이트가 나온다.
char를 사용하면 최소 1바이트 부터 값이 찍히지만 int를 사용하면 4바이트부터 값이 찍힌다.
비트필드를 사용할 때는 변수명을 안 적을 수도 있는데 만약 char :0; 이라고 적으면 현재 워드(char, int)의 미사용 비트를 모두 버린다. 혹은 char :1;이런 식으로 변수명을 안 적어도 비트를 버리는 역할만 한다.
'언어 > C' 카테고리의 다른 글
[Tip] File I/O Error 다루는 법 (0) | 2016.11.05 |
---|---|
구조체의 크기와 pragma pack (0) | 2016.10.28 |
volatile 형한정어 (0) | 2016.10.19 |
scanf와 fgets 함수를 같이 사용하면서 나타나는 문제점 (0) | 2016.10.19 |
배열의 문자열 초기값과 포인터의 문자열 초기값의 차이 (0) | 2016.10.13 |