我找到了以下代码来检查字节顺序状态。它适用于 VS C++:
#if '1234' != 0x31323334
# define BIG_ENDIAN
#endif
我不知道它是否适用于其他编译器。请问是标准码吗?
最佳答案
具有多个字符的字符常量,例如 '1234'
,具有实现定义的值。 '1234'
的值与系统的字节序之间的关系完全没有保证。
预处理器只是没有足够的信息来确定目标系统的字节顺序。
请记住,大端和小端并不是唯一的可能性。对于 4 字节整数类型,有 24(4 个阶乘)可能的字节排序。所有这些都是该语言允许的,并且至少其中 3 个已被真机使用。
关于c++ - 使用预处理器检查字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935602/