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

标签 c++ visual-studio compiler-construction

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

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

我不知道它是否适用于其他编译器。请问是标准码吗?

最佳答案

具有多个字符的字符常量,例如 '1234',具有实现定义的值。 '1234' 的值与系统的字节序之间的关系完全没有保证。

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

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

关于c++ - 使用预处理器检查字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935602/

相关文章:

c++ - 编写编译器 : how to get simple templates to work?

c++ - 如何更改包含二维数组 C++ 的最高值和最低值的列

c# - Visual Studio 2013 或 2015 EditorPackage 无法持续​​正确加载

visual-studio - ESLint 支持 Visual Studio 2017

visual-studio - 如何将 Visual Studio 项目从 Windows 切换到 Linux 容器?

multithreading - 使用多核提高并行性能

java - "The left hand side of an assignment must be a variable"由于额外的括号

c++ - 如何对 float 执行按位运算

C++/Objective-C : The two files of a class are called Header and . ..?

c++ - 将非模板基类向下转换为非类型模板子类