, - .
, 32- , 3 :
:
#include <iostream>
struct SomeDeviceMemoryMap1
{
unsigned int id : 8;
unsigned int status : 8;
unsigned int reserved : 16;
unsigned int color : 32;
};
int main()
{
std::cout << sizeof(SomeDeviceMemoryMap1)<<std::endl;
SomeDeviceMemoryMap1 m1;
m1.id = 1;
m1.status = 5;
m1.color = 33;
}
++ 03, , .
++ 11 . :
#include <iostream>
enum class MyFixedType1 : uint8_t
{
ID1=0,
ID2,
ID3
};
enum class MyFixedType2 : uint8_t
{
STATUS1,
STATUS2,
STATUS3=5
};
enum class MyFixedType3 : uint32_t
{
RED,
BLUE = 33,
BLACK
};
struct SomeDeviceMemoryMap2
{
MyFixedType1 id;
MyFixedType2 status;
unsigned int reserved : 16;
MyFixedType3 color;
};
int main()
{
std::cout << sizeof(SomeDeviceMemoryMap2)<<std::endl;
SomeDeviceMemoryMap2 m2;
m2.id = MyFixedType1::ID1;
m2.status = MyFixedType2::STATUS3;
m2.color = MyFixedType3::BLUE;
}