gpt4 book ai didi

c++ - 可移植 __attribute__ ((__packed__))

转载 作者:太空狗 更新时间:2023-10-29 20:45:37 25 4
gpt4 key购买 nike

是否有 __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++ - 可移植 __attribute__ ((__packed__)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com