반응형
1. 같은 자료형은 붙여서 선언하는 것이 메모리에 효율적이다.
int a;
int b;
int c;
long d;
long e;
long f;
2. UNION 비트필드의 구성 방법
공용체는 멤버 중에서 가장 큰 자료형의 공간을 공유한다. 이런 특성을 이용해서 가장 큰 자료형을 정의하고 이를 분할하는 여러 멤버들로 구성해서 bitfield를 만들 수 있다.
참고 : dojang.io/mod/page/view.php?id=453
주로 로봇의 작동 모드를 제어할 때 아래와 같이 작성한다고 한다.
typedef union package_t{
struct{
uint32_t actionone:1;
uint32_t actiontwo:1;
uint32_t actionthree:1;
uint32_t reserved:26;
uint32_t actionmode:3;
}
uint8_t packet[4];
uint32_t bitfield;
}TYPE_PACKAGE;
여기서 uint32_t나 uint8_t와 같은 자료형은 32비트, 8비트 정수형 자료형이란 뜻이다. 즉 char, short, int, long, long long과 같은 의미이다. 이런 자료형은 stdint.h 헤더에 선언되어있다.
참고 : dojang.io/mod/page/view.php?id=35
uint32_t actionone:1;의 의미는, 32비트 중 1개의 비트만 actionone으로 선언한다는 의미이다. 즉,
struct{
uint32_t actionone:1;
uint32_t actiontwo:1;
uint32_t actionthree:1;
uint32_t reserved:26;
uint32_t actionmode:3;
}
이 구조체는 32비트를 각각 actionone, actiontwo, actionthree, reserved, actionmode로 나눈다는 의미다.
반응형