C 변수 선언 질문입니다.

lovejin0309의 이미지

예전에 얼핏 설명을 들었던것 같은데 기억이 잘 안나네요.

다음과 같은 형태로 변수가 선언되어 있습니다. (이건 그냥 제가 임의대로 적어 놓은 것입니다.)

int main(){
     int i:8;
}

이상한 형태이지 않나요? 정말 예전에 들어본 것 같은데 기억이 안나네요. ㅎㅎ

sangwoo의 이미지

bit field였던 거 같습니다. 저도 기억이 잘 안나네요.. :-(

----
Let's shut up and code.

paperplane의 이미지

bit field 맞습니다.

구조체 안의 변수 선언 뒤에 ": 숫자" 를 넣어주면

그 변수는 해당 숫자의 비트 크기 만큼의 메모리를 사용하겠다는 의미입니다.

(위의 경우 i 변수는 8 bit 만을 사용하겠군요)

구조체가 차지하는 메모리는 확실히 줄어들겠지만,

일단 변수를 처리하는 코드보다 비트 단위 연산을 처리하는 코드가 더 길기 때문에

절대적으로 메모리가 더 적게 차지하는 것을 보장하는 것은 아니라고 알고 있습니다.

게다가 일반 변수에 접근하는 것보다 비트 필드에 접근하는 것이 더 느리기 때문에

속도 면에서도 큰 이득을 보지는 못합니다.