table of contents
std::endian(3) | C++ Standard Libary | std::endian(3) |
NAME¶
std::endian - std::endian
Synopsis¶
Defined in header <bit>
enum class endian
{
little = /*implementation-defined*/, (since C++20)
big = /*implementation-defined*/,
native = /*implementation-defined*/,
};
Indicates the endianness of all scalar types:
* If all scalar types are little-endian, std::endian::native equals
std::endian::little.
* If all scalar types are big-endian, std::endian::native equals
std::endian::big.
Corner case platforms are also supported:
* If all scalar types have sizeof equal to 1, endianness does not matter and
all
three values, std::endian::little, std::endian::big, and std::endian::native
are
the same.
* If the platform uses mixed endian, std::endian::native equals neither
std::endian::big nor std::endian::little.
Possible implementation¶
enum class endian
{
#if defined(_MSC_VER) && !defined(__clang__)
little = 0,
big = 1,
native = little
#else
little = __ORDER_LITTLE_ENDIAN__,
big = __ORDER_BIG_ENDIAN__,
native = __BYTE_ORDER__
#endif
};
Notes¶
Feature-test macro Value Std Feature
__cpp_lib_endian 201907L (C++20) std::endian
Example¶
// Run this code
#include <bit>
#include <iostream>
int main()
{
if constexpr (std::endian::native == std::endian::big)
std::cout << "big-endian\n";
else if constexpr (std::endian::native == std::endian::little)
std::cout << "little-endian\n";
else
std::cout << "mixed-endian\n";
}
Possible output:¶
mixed-endian
See also¶
byteswap reverses the bytes in the given integer value
(C++23) (function template)
2024.06.10 | http://cppreference.com |