我们需要支持3种硬件平台 - Windows (little Endian) 和 Linux Embedded (big and little Endian)。我们的数据流取决于所使用的机器,数据需要分解为位域。
如果可能的话,我想编写一个单一的宏来抽象细节。在Linux上,我可以使用 bswap_16 / bswap_32 / bswap_64 进行 Little Endian 转换。
然而,在我的 Visual C++ includes 中找不到这个函数。
是否有通用的内置函数可用于这两个平台(Windows 和 Linux)?
如果没有,那么在 Visual C++ 中可以使用什么来进行字节交换(除了自己编写 - 希望有一些机器优化的内置函数)?
谢谢。
如果可能的话,我想编写一个单一的宏来抽象细节。在Linux上,我可以使用 bswap_16 / bswap_32 / bswap_64 进行 Little Endian 转换。
然而,在我的 Visual C++ includes 中找不到这个函数。
是否有通用的内置函数可用于这两个平台(Windows 和 Linux)?
如果没有,那么在 Visual C++ 中可以使用什么来进行字节交换(除了自己编写 - 希望有一些机器优化的内置函数)?
谢谢。
union
的示例实现无法保证正常工作。 - Simon Richterunion { int x, y; } u; u.x = 5; return u.y;
转换为return 0;
,例如。 - bames53