Namespaces
Variants

std::endian

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
Défini dans l'en-tête <bit>
enum class endian
{
    little = /* implementation-defined */,
    big    = /* implementation-defined */,
    native = /* implementation-defined */,
};
(depuis C++20)

Indique le boutisme de tous les types scalaires :

  • Si tous les types scalaires sont en petit-boutiste, std::endian::native vaut std::endian::little.
  • Si tous les types scalaires sont en gros-boutiste, std::endian::native vaut std::endian::big.

Les plateformes aux cas particuliers sont également prises en charge :

  • Si tous les types scalaires ont sizeof égal à 1, le boutisme n'a pas d'importance et les trois valeurs, std::endian::little, std::endian::big, et std::endian::native sont identiques.
  • Si la plateforme utilise un boutisme mixte, std::endian::native n'est égal ni à std::endian::big ni à std::endian::little.

Implémentation possible

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

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_endian 201907L (C++20) std :: endian

Exemple

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

Sortie possible :

mixed-endian

Voir aussi

(C++23)
inverse l'ordre des octets dans la valeur entière donnée
(modèle de fonction)
Documentation C pour endian