2015-12-16 40 views
-1

如何獲得C中union的結構體的大小?如何在C中的聯合中獲取結構的大小?

給出以下定義:

typedef union 
{ 
    struct req_ 
    { 
     uint8_t cmd1; 
     uint8_t cmd2; 
    } req; 

    struct rsp_ 
    { 
     uint8_t cmd_result; 
     uint8_t status_1; 
     uint8_t status_2; 
     uint8_t status_3; 
     uint8_t status_4; 
    } rsp; 
} msg_t; 

sizeof(msg_t)將提供結合,在這種情況下,將5作爲rsp_req_更大的最大尺寸。

How do you get sizeof(req_)

回答

4

像這樣:

sizeof(struct req_); 

例如:

int main() 
{ 
    printf("sizeof msg_t=%zd\n",sizeof(msg_t)); 
    printf("sizeof struct req_=%zd\n",sizeof(struct req_)); 
} 

輸出:

sizeof msg_t=5 
sizeof struct req_=2 
+0

AAAAH,我知道這是簡單的東西。謝謝。 – linsek

0

req_是結構變量。你需要要麼把struct

size_t size = sizeof(struct req_); 

或使用該結構體變量宣告

size_t size = sizeof(msg_t.req_.req);