使用预处理器检查字节顺序
Checking byte order using preprocessor
我找到了以下代码来检查字节顺序状态。它适用于VS c++:
#if '1234' != 0x31323334
# define BIG_ENDIAN
#endif
我不知道它是否适用于其他编译器。我想问一下,这是否是标准代码?
具有多个字符的字符常量,例如'1234'
,具有实现定义的值。'1234'
的值与系统的端序之间的关系是绝对不能保证的。
预处理器没有足够的信息来确定目标系统的字节顺序。
请记住,大端序和小端序不是唯一的可能。对于一个4字节的整数类型,有24种(4的阶乘)可能的字节排序。所有这些都被语言所允许,并且至少其中的3个已经被真实的机器所使用。
相关文章:
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- C++ int* 和 char* 字节顺序已交换
- 交换未定义数据类型中的字节顺序
- winsock上的蓝牙,如何删除字节顺序标记
- 将网络字节顺序(大字节序)转换为小字节序
- 将主机字节顺序转换为网络字节顺序有时会导致奇怪的结果
- 当在网络字节顺序中放置双精度时,为什么它是在 4 字节块中完成的
- 使用mysql本机函数进行字节顺序转换
- C++:如何交换wchar_t的字节顺序
- reinterpret_cast接收端的'serializing'数据、字节顺序和对齐方式
- 到Arduino的串行通信的字节顺序
- 使用不带Unicode字节顺序标记的iconv进行字符转换
- 从Byte*到unsigned int的memcpy正在反转字节顺序
- 忽略C++中的字节顺序标记,从流中读取
- iPhone TCP-IP字节顺序映射
- 特定字节顺序的内存c/c++
- 按字节顺序读取UTF-16格式的文件到wstring
- 使用预处理器检查字节顺序
- 确定uint32_t的字节顺序
- 什么可能导致数据包的字节顺序部分混乱?