핵심 정리
구조체 비트 필드
구조체의 멤버를 선언할 때 : (콜론) 뒤에 비트 수를 지정하면 멤버를 비트 단위로 저장할 수 있습니다. 비트 필드의 자료형은 정수 자료형만 사용할 수 있습니다.
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보다 작을 때까지 반복 코드; }