typedef struct BaseMessage
{
int u32DeviceID : 32;
int u32CoreID : 32;
unsigned int u16Class : 16;
unsigned int u8OpCode : 8;
unsigned int u16CRC : 16;
} BaseMessage;
typedef struct MessageWithParameters
{
BaseMessage base;
int u8Param1 : 8;
int u8Param2 : 8;
} MessageWithParameters;
typedef struct FullMessage
{
int u32DeviceID : 32;
int u32CoreID : 32;
unsigned int u16Class : 16;
unsigned int u8OpCode : 8;
unsigned int u16CRC : 16;
int u8Param1 : 8;
int u8Param2 : 8;
} FullMessage;
int main()
{
printf("%d", sizeof(MessageWithParameters));
printf("%d", sizeof(FullMessage));
}
MessageWithParameters
BaseMessage
은 자체 크기가 어느 정도입니까?
스택에 있더라도?
나는 컴파일러가 MessageWithParameters
을 FullMessage
과 같은 형태로 변환한다고 추측하고있다.
맞습니까?두 구조체의 크기는 동일하지만 구조체 인스턴스가 하나만 포함되어 있습니다.
구조체의 크기가 서로 다를 것으로 예상되는 이유는 무엇입니까? 왜 구조체의 크기가 다른지 묻는 이유는 무엇입니까? – nos
BaseMessage base는 자체적으로 크기를 가져야하기 때문에. MessageWithParameters에 BaseMessage가 포함되어 있기 때문에 MessageWithParameters가 FullMessage보다 더 많은 크기를 차지할 것으로 예상했습니다. –
내 컴퓨터에서 작동합니다. FullMessage와 MessageWithParameters 사이에는 아무런 관련이 없기 때문에 왜 동일하거나 다른 크기를 가져야한다고 생각하는지에 대한 질문을 던집니다. – nos