핵심 정리

구조체 비트 필드

구조체의 멤버를 선언할 때 : (콜론) 뒤에 비트 수를 지정하면 멤버를 비트 단위로 저장할 수 있습니다. 비트 필드의 자료형은 정수 자료형만 사용할 수 있습니다.

struct 구조체이름 {
    정수자료형 멤버이름 : 비트수;
};

비트 필드와 공용체를 함께 사용하기

비트 필드와 공용체를 함께 사용하면 비트 필드값을 한꺼번에 접근할 수도 있고 각각의 비트 필드값을 따로 접근할 수도 있습니다.

struct Flags {
    union {    // 익명 공용체
        struct {    // 익명 구조체
            unsigned short a : 3;    // a는 3비트 크기
            unsigned short b : 2;    // b는 2비트 크기
            unsigned short c : 7;    // c는 7비트 크기
            unsigned short d : 4;    // d는 4비트 크기
        };                           // 합계 16비트
        unsigned short e;    // 2바이트(16비트)
    };
};

열거형

열거형은 정수형 상수에 이름을 붙입니다. 열거형에 초깃값을 지정하지 않으면 0부터 시작합니다.

// 열거형 정의하기
enum 열거형이름 {
    1 = 초깃값,
    2,
    3,
};

// 값의 개수까지 포함된 열거형 정의하기
enum 열거형이름 {
    1 = 초깃값,
    2,
    3,
    열거형Count    // 값의 개수를 나타내는 항목
};

// 열거형 변수 선언하기
enum 열거형이름 변수이름;

변수 = 열거형값1;     // 열거형 변수에 열거형 값 할당

// 열거형을 정의하면서 열거형 별칭 정의하기
typedef enum 열거형이름 {
    1 = 초깃값,
    2,
    3
} 열거형별칭;

// 열거형을 정의하면서 열거형 별칭 정의하기(값의 개수 포함)
typedef enum 열거형이름 {
    1 = 초깃값,
    2,
    3
    열거형Count    // 값의 개수를 나타내는 항목
} 열거형별칭;

// 열거형 별칭으로 변수 선언하기
열거형별칭 변수이름;

// 열거형을 switch에 활용하기
switch (열거형변수)
{
case 열거형값1:
    코드1;
    break;
case 열거형값2:
    코드2;
    break;
}

// 열거형을 for에 활용하기
for (열거형이름 i = 열거형값1; i < 열거형Count; i++)    // 초깃값은 열거형값1, 
{                                                     // 열거형Count보다 작을 때까지 반복
    코드;
}