2015-01-07 16 views
0

我有一個struct類似於:如何存儲結構成員爲大端

typedef struct _pair_t{ 
    uint16_t keylen;  // 2 
    uint32_t vallen;  // 4 
} __attribute__((__packed__)) pair_t; 

我將使用mmap從文件中讀取,所以我想數字存儲爲大端。

我需要做htobe16/betoh16或者有一些__attribute__可以爲我做這個嗎?

+1

旁註:不應該定義以'_t'結尾的類型,以避免與內置編譯器類型可能發生的衝突。 – user694733

+1

@Sidenote - 我使用hm_pair_t(我預先在hm_的任何地方都使用_t作爲所有typedef)。我應該在代碼中解決這個問題嗎?這種命名有什麼好的方法嗎? – Nick

+1

以'_'開頭的名稱也被保留。 – Jasen

回答

5

您需要使用htobe16或htons或類似軟件。大多數編譯器沒有辦法將變量聲明爲具有不同的字節順序。

我知道一個(付費的,商業的)編譯器,它具有將整個程序轉換爲「相反」排序的開關,但這不完全是你想要的,我相信你不想要爲此付費。