是否有一种安全,可移植的方法来确定(在编译期间)要在其上编译程序的平台的字节顺序?我在用C写作。
[编辑]感谢您的回答,我决定坚持使用运行时解决方案!
这是用于编译时检查
使用CMake typedef union {
uint32_t word;
uint8_t bytes[4];
} byte_check;
作为
uint32_t word;
uint8_t * bytes = &word;
要回答compile-time
使用C99,您可以执行以下检查:
从#define I_AM_LITTLE (((union { unsigned x; unsigned char c; }){1}).c)
中读取的有趣内容:
我想扩展为C ++提供C FAQ函数的答案
不是在编译时,而是在运行时。这是我编写的用于确定字节序的C函数:
来自sizeof(int)==4
:
我曾经使用过这样的构造:
据我所知,不是在编译期间。
在运行时,您可以进行一些琐碎的检查,例如将多字节值设置为已知的位字符串,并检查产生的字节数。例如,使用联合,