union LowLevelNumber
{
unsigned int n;
struct
{
unsigned int lowByte : 8;
unsigned int highByte : 8;
unsigned int upperLowByte : 8;
unsigned int upperHighByte : 8;
} bytes;
struct
{
unsigned int lowWord : 16;
unsigned int highWord : 16;
} words;
};
이 공용체를 사용하면 부호없는 정수 바이트 또는 워드 단위로 액세스 할 수 있습니다. 그러나 코드는 오히려 추한 외모 :부호없는 정수의 바이트/단어에 액세스하는 C++ 클래스
var.words.lowWord = 0x66;
나 같은 코드 작성할 수 있도록 해주는 방법이있다 :
var.lowWord = 0x66;
업데이트 :
이 짧은 작성에 대한 정말/아름다운 코드 위의 예와 같습니다. 노조 솔루션 자체가 작동하지만, lowWord 또는 lowByte에 액세스 할 때마다 .words 또는 .bytes를 쓰고 싶지 않습니다.
구현 정의 동작 인 w.r.t. union에서 비트 필드의 순서와 정수의 표현. 엔디안이 변경되면 중단되며, 다른 컴파일러간에 변경 될 수도 있습니다. C99 초안 6.7.2.1 # 9 및 6.5.2.3 # 5를 참조하십시오. – starblue