Por lo menos desde C++11 tenemos encantadora de ancho fijo enteros, por ejemplo, en C++ <cstdint>
o en C <stdint.h>
fuera de la caja, (por ejemplo std::uint32_t
, std::int8_t
), así que con o sin el std::
delante de ellos, e incluso como macros para el ancho mínimo de (INT16_C
, UINT32_C
y así sucesivamente).
Sin embargo, hemos de hacer trato con las bibliotecas de cada día, que definen su propia ancho fijo enteros y usted podría haber visto, por ejemplo, sf::Int32
, quint32
, boost::uint32_t
, Ogre::uint32
, ImS32
, ... Puedo ir y si me quieres. Usted también conozco a un par más, probablemente.
A veces estos typedefs (a menudo también las definiciones de macro) puede llevar a conflictos, por ejemplo, cuando se desea pasar un std
ancho fijo entero a una función de una biblioteca esperando un ancho fijo entero con exactamente el mismo ancho, pero se define de manera diferente.
El punto de anchura fija números enteros es que ellos tengan un tamaño fijo, que es lo que necesitamos en muchas situaciones, como ustedes saben. Entonces, ¿por qué todas estas bibliotecas ir sobre y typedef exactamente el mismo enteros ya tenemos en el estándar de C++? Los define son a veces confusos, redundante y puede invadir tu base de código, que son cosas muy malas. Y si no tienen el ancho y signedness prometen tener, al menos el pecado contra el principio de la menor sorpresa, así que ¿cuál es su punto por la presente pido a usted?