Nejméně od C++11 jsme dostali krásné pevnou šířku celá čísla, pro příklad v C++'s <cstdint>
nebo v C je <stdint.h>
po vybalení z krabice, (např. std::uint32_t
, std::int8_t
), takže s nebo bez std::
před nimi, a dokonce i makra pro minimální šířky (INT16_C
, UINT32_C
a tak dále).
Ještě máme udělat dohodu s knihovnami každý den, které definují jejich vlastní pevná šířka celá čísla, a jste mohli vidět například sf::Int32
, quint32
, boost::uint32_t
, Ogre::uint32
, ImS32
,, Můžu jít dál a dál, pokud chcete, abych. Víš, pár více pravděpodobně.
Někdy se tyto typedefs (často také definice maker) může vést ke konfliktům například, když chcete předat std
pevná šířka celé číslo funkce z knihovny očekával pevnou šířku celé číslo s přesně stejnou šířku, ale definována jinak.
Bod s pevnou šířkou celých čísel je je mít pevnou velikost, což je to, co potřebujeme v mnoha situacích, jak víte. Tak proč by všechny tyto knihovny jít o a typedef přesně stejná čísla už máme v C++ standard? Ty navíc definuje, jsou někdy matoucí, redundantní a mohou napadnout své codebase, které jsou velmi špatné věci. A pokud nemají šířku a signedness slibují, že alespoň hřích proti principu nejmenšího překvapení, takže to, co je na jejich místě bych se tímto zeptat?