Au moins depuis C++11 nous avons beau fixe largeur des entiers par exemple en C++ <cstdint>
ou C est <stdint.h>
hors de la boîte, (par exemple std::uint32_t
, std::int8_t
), donc avec ou sans la std::
en face d'eux et de même que pour les macros, pour une largeur minimum (INT16_C
, UINT32_C
et ainsi de suite).
Pourtant, nous devons nous occuper avec les bibliothèques de tous les jours, qui définissent leurs propres largeur fixe entiers et vous pouvez le voir par exemple sf::Int32
, quint32
, boost::uint32_t
, Ogre::uint32
, ImS32
, ... Je peux aller sur et sur, si vous voulez de moi. Vous aussi, vous connaissez un couple plus probablement.
Parfois, ces typedefs (souvent des définitions de macros) peuvent conduire à des conflits, par exemple lorsque vous souhaitez passer un std
largeur fixe entier à une fonction à partir d'une bibliothèque attend à une largeur fixe entier avec exactement la même largeur, mais des sens différents.
Le point fixe d'une largeur de nombres entiers est d'avoir une taille fixe, qui est ce dont nous avons besoin dans de nombreuses situations, comme vous le savez. Alors pourquoi tous ces bibliothèques aller sur et typedef exactement les mêmes nombres entiers que nous avons déjà dans la norme C++? Ces extra définit sont parfois source de confusion, redondante et peut envahir votre base de code, qui sont de très mauvaises choses. Et si ils n'ont pas la largeur et de ce paramètre ils promettent d'avoir, au moins ils ont péché contre le principe de moindre étonnement, alors, quel est leur point par la présente, je vous le demande?