我该如何确定编译时所用平台的大小端(字节序)?我已经看到了许多使用强制类型转换和一些依赖于特定平台的选项来在运行时确定大小端的方法。是否有一种可移植或标准的方法来实现这一点?
constexpr bool is_little_endian = ?;
constexpr bool is_little_endian = ?;
C++20在<bit>
中增加了std::endian
,可以在constexpr
上下文中使用。
if constexpr (std::endian::native == std::endian::little) {
std::cout << "litle endian\n";
} else if constexpr(std::endian::native == std::endian::big) {
std::cout << "big endian\n";
} else {
std::cout << "something silly\n";
}
* 最初它是 <type_traits>
,并且在早期实现中仍然存在。