我想懒惰,现在写一些代码,如果目标计算机的字节序不同于我自己的字节序,这些代码将中断。但是我想知道它何时会中断,因此我可以在必要时或在必要时进行修复。
浮点数和整数的字节序是否是已编译程序的属性,以便我可以在编译时使用断言以某种方式对其进行检查?还是我必须在运行时断言?
最佳答案
是的,字节序是所讨论机器的固有特性,在编译时就已知道。大多数操作系统将在某处设置#define
来告诉您什么是字节序。
特别是在Linux上,您可以执行以下操作:
#if __BYTE_ORDER == __LITTLE_ENDIAN
...
#elif __BYTE_ORDER == __BIG_ENDIAN
...
#elif __BYTE_ORDER == __PDP_ENDIAN
...
#else
...
#endif