c++ - 如何在编译时确定字节顺序?

标签 c++

如何在编译时确定我的平台是小端还是大端?我见过很多使用转换在运行时确定的方法,以及一些依赖于平台的选项。是否有可移植或标准的方法来执行此操作?

constexpr bool is_little_endian = ?;

最佳答案

添加了 C++20 std::endian <bit> * 可以在 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";
}

* 原来是<type_traits>并且会出现在旧的实现中。

关于c++ - 如何在编译时确定字节顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144736/

相关文章:

c++ - 如何将 .so 文件链接到 cpp 程序

c++ - 为什么 sizeof 表达式不是 2、4、8 等编译时常量?

c++ - popen 挂起并导致 CPU 使用率达到 100

c++ - 移动文本模式光标不起作用

c++ - 在 C/C++ 中将数组拆分为 block

C++单例创建问题

c++ - 非模板化结构/类的模板化成员函数 - 默认类型是什么?

c++ - 在 UNIX 中使用 g++ 编译器从 C++ 代码链接到 R 和 RInside 库时发生 undefined reference 错误

c++ - 使用 ofstream 将数据写入其文件后更新 ifstream 对象

c++ - 多态性和函数重载?