簡體   English   中英

portable __attribute __((__ package ___))

[英]portable __attribute__ ((__packed__))

是否存在__attribute__ ((__packed__))的可移植等效項

(通過便攜性,我的意思是在PC,Android和iPhone上工作,無論架構如何)

根據定義, __attribute__是不可移植的。 如果您希望數據以特定方式使用,Plan9解決方案通常在結構中使用unsigned char數組:

struct foo {
    uchar data1[4];
    uchar other[2];
}

通常不會有任何對齊,因為它基本上使用無符號字符。 當然,如果你對疼痛有很高的耐受性,你可以隨時使用補償的enum

enum { FOO_DATA1=0, FOO_OTHER=4, FOO_LAST=6 };

然后你可以像這樣加載它:

unsigned char foo[FOO_LAST];
uint32_t n = htonl(val)
memcpy(foo+FOO_DATA1, &n, sizeof n)
memcpy(foo+FOO_OTHER, &some_16_bit_val, sizeof some_16_bit_val)

只要你有胃,就可以完全攜帶。

編號結構打包和填充不是C ++語言規范的一部分(它屬於平台ABI),因此處理它的任何內容本身都在語言之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM