Almeno dal C++11 abbiamo avuto bel larghezza fissa interi per esempio in C++ <cstdint>
o C <stdint.h>
out of the box, (per esempio std::uint32_t
, std::int8_t
), quindi con o senza il std::
di fronte a loro e anche come macro per un minimo di larghezze (INT16_C
, UINT32_C
e così via).
Ancora dobbiamo fare occupano di librerie di ogni giorno, che definiscono la loro larghezza fissa interi e si potrebbe avere visto per esempio sf::Int32
, quint32
, boost::uint32_t
, Ogre::uint32
, ImS32
, ... Posso andare su e su, se mi vuoi. Anche tu conosco un paio di più, probabilmente.
A volte questi tipi di (spesso anche le definizioni di macro) può portare a conflitti, per esempio, quando si desidera passare un std
larghezza fissa intero per una funzione di una libreria in attesa di una larghezza fissa intero con esattamente la stessa larghezza, ma definiti in modo diverso.
Il punto di larghezza fissa interi è loro che hanno una dimensione fissa, che è ciò di cui abbiamo bisogno, in molte situazioni, come sapete. Ma perché tutte queste biblioteche andare su e typedef esattamente la stessa interi, abbiamo già nello standard C++? Quelle extra definisce sono a volte confuse, ridondante e può invadere il vostro codebase, che sono cose molto cattive. E se non hanno la larghezza e l' "signedness" che promettono di avere, almeno il peccato contro il principio del minimo stupore, quindi qual è il loro punto sono con la presente a chiedere?