Cel puțin din C++11 ne-am minunat lățime fixă numere întregi, de exemplu in C++modelului <cstdint>
sau în C e <stdint.h>
afară de la cutie, (de exemplu std::uint32_t
, std::int8_t
), deci cu sau fără std::
în fața lor și chiar ca macro-uri pentru minim lățimi (INT16_C
, UINT32_C
și așa mai departe).
Încă avem de a face cu biblioteci în fiecare zi, care definesc propriile lățime fixă numere întregi și s-ar putea fi văzut de exemplu sf::Int32
, quint32
, boost::uint32_t
, Ogre::uint32
, ImS32
, ... Nu pot merge pe și de pe, dacă vrei. Ai prea știu un cuplu mai probabil.
Uneori, aceste typedefs (de asemenea, de multe ori definiții macro) poate duce la conflicte de exemplu, atunci când vrei să treci la un std
lățime fixă număr întreg la o funcție dintr-o bibliotecă așteaptă o lățime fixă număr întreg cu exact aceeași lățime, dar definită în mod diferit.
Punctul de lățime fixă numere întregi este ele având o dimensiune fixă, care este ceea ce avem nevoie în multe situații după cum știți. Deci, de ce ar toate aceste biblioteci și du-te despre typedef exact aceleași numere întregi avem deja în C++ standard? Cei suplimentar definește sunt uneori confuze, redundante și poate invada codebase, care sunt lucruri foarte rele. Și dacă nu au lățimea și signedness ei promit să aibă, cel puțin păcat împotriva principiu de uimire, deci, ce este punctul lor prin prezenta, vă întreb?