正在使用Boost Endian算术类型被认为是好实践

Is using the Boost Endian Arithmetic types considered good practice?

本文关键字:类型 认为是 Boost Endian      更新时间:2023-10-16

我在一家公司中,我是嵌入式软件工程师的新手,我必须处理很多网络。我必须一直在C 中进行编程,并使用同事的代码,我注意到他们使用结构来构建数据包以使用TCP/UDP通过网络发送。为此,由于我们使用的机器是小末日,所以一切都必须转换为大型。因此,当必须发送数据时,他们将已知功能用作HTON,NTOH等。

所以我正在浏览如何使我的代码便携式可移植,以便程序员不必关心他的机器的终点,我偶然发现了boost库的Endian算术类型,程序员,程序员可以决定,整数类型如何存储在内存中。在我会使用它们的情况下,它们看起来非常好,但在任何地方几乎没有提到它们。Stackoverflow仅有有关如何无法以适当的方式处理端的问题的帖子,但是这些算术类型对我来说似乎是一个不错的便携式解决方案。为什么在任何地方几乎没有提及这些类型,而从来都不是建议的解决方案?他们有什么问题还是太新了?

它取决于哪里。当然,在整个代码库中使用它们是一个设计权衡。

endian类型不是零成本的抽象。除了被动存储以外,将它们用于其他任何事情可能会损害性能。(想象一下在非本地末日的数字上进行数字处理。处理器可能会花费更多的时间在高阶/低阶字节和单词时与实际计算相比)。

如果您的应用程序是典型的,您将拥有不包含许多"实时"数据元素的POD传输缓冲区,并且在引擎盖下的自动式Endianness转换的巨大好处很值得。

我知道Boost Endian类型,并且希望它们在心跳中反复写NTOH和朋友。

实际上,尽管我已经编写了通用序列化助手(其中使用ntoh/hton隔离到少数原始函数)或使用了现有库(例如Protobuf)。因此,具有讽刺意味的是,我也没有为任何生产代码使用Boost Endian。

也许这种模式对许多开发人员来说是有效的,解释了Boost Endian周围的很多示例?

相关文章: