如何在编译时确定字节序?

时间:2018-05-02 23:04:32

标签: c++

如何在编译时确定我的平台是小端还是大端?我已经看到很多方法可以在运行时使用强制转换来确定,以及一些与平台相关的选项。是否有便携式或标准的方式来做到这一点?

constexpr bool is_little_endian = ?;

1 个答案:

答案 0 :(得分:9)

C ++ 20将std::endian添加到<type_traits>,可以在constexpr上下文中使用。

Live example of below code

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";
}