使用预处理器检查字节顺序

Checking byte order using preprocessor

本文关键字:字节 顺序 检查 处理器 预处理      更新时间:2023-10-16

我找到了以下代码来检查字节顺序状态。它适用于VS c++:

#if '1234' != 0x31323334
#  define BIG_ENDIAN
#endif

我不知道它是否适用于其他编译器。我想问一下,这是否是标准代码?

具有多个字符的字符常量,例如'1234',具有实现定义的值。'1234'的值与系统的端序之间的关系是绝对不能保证的。

预处理器没有足够的信息来确定目标系统的字节顺序。

请记住,大端序和小端序不是唯一的可能。对于一个4字节的整数类型,有24种(4的阶乘)可能的字节排序。所有这些都被语言所允许,并且至少其中的3个已经被真实的机器所使用。