gpt4 book ai didi

c++ - 雕刻结构内存布局 "in stone"

转载 作者:行者123 更新时间:2023-12-05 05:30:07 25 4
gpt4 key购买 nike

也许这个话题已经被打死了,但我找不到任何“定论”的答案。无论如何,我需要在 C++17 中指定一个普通的旧数据结构,它将作为“原始字节 block ”从外部存储器读取/写入/写入。此外部存储器内容必须“永远”指定其存储器布局,无论今天和 future 几十年有任何更改的编译器设置、新的编译器品牌或版本。

我目前正在为每个结构成员使用 C++ **alignas **关键字和固定宽度数据类型,但这真的是最好的方法吗?任何建议和陷阱将不胜感激。

仅供引用,这是一个使用 ST CubeIDE 的 STM32H7xx MCU 上的嵌入式项目。

最佳答案

使用固定宽度数据有很多陷阱。

限制在 512 字节是很棘手的。如果您觉得可以将数据表示为合理的可移植数据(32 位或 64 位 int、float、double),那么我会按照您选择的顺序对您的信息进行 base64 编码,并使用 zstd(最佳)或 gzip(简单)进行压缩).

这应该给你 about 486 bytes您的数据存储在 512 字节的位置,并且可以应对大多数编译器更改和其他问题。

关于c++ - 雕刻结构内存布局 "in stone",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74777376/

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