Encabezado de tipo C ++ U32

Quiero usar U32 escriba pero no puedo encontrar el encabezado donde está definido. ¿Alguien sabe?

preguntado el 28 de agosto de 11 a las 00:08

3 Respuestas

No existe un tipo estándar llamado U32, pero si tu #include <cstdint> (stdint.h para C) puedes usar std::uint32_t1, un entero de 32 bits sin signo, que es (supongo) lo que quieres.

Esta es una lista de tipos en el cstdint encabezamiento:

namespace std {
    int8_t
    int16_t
    int32_t
    int64_t
    int_fast8_t
    int_fast16_t
    int_fast32_t
    int_fast64_t
    int_least8_t
    int_least16_t
    int_least32_t
    int_least64_t
    intmax_t
    intintptr_t
    uint8_t
    uint16_t
    uint32_t
    uint64_t
    uint_fast8_t
    uint_fast16_t
    uint_fast32_t
    uint_fast64_t
    uint_least8_t
    uint_least16_t
    uint_least32_t
    uint_least64_t
    uintmax_t
    uintintptr_t
}

1 Gracias Martinho Fernandes por señalar que estos tipos están en el espacio de nombres. std.

Respondido 28 ago 11, 05:08

En "Game Engine Architecture" hay un código sppinet que usa U32 ... por eso estoy preguntando ... - Tiago Costa

@Tiago: Te das cuenta de que C tiene la typedef palabra clave que le permite crear alias de tipo? - Kerrek SB

Tenga en cuenta que los tipos en <cstdint> están en el espacio de nombres std. - R. Martinho Fernandes

Me gusta el estilo de u32 / u64 ..., ¿hay un archivo de encabezado estándar que defina estos tipos? ¡¡¡muchas gracias!!! - yushang

Si bien cstdint podría ser una solución, no es universal: las versiones de MSVC anteriores a 2010 no se incluían con esa. Si escribe para varias plataformas, deberá proporcionar los tipos estándar usted mismo si se detecta MSVC <2010. O usa el impulsar uno si usa boost.

Respondido 28 ago 11, 04:08

U32 es un atajo idiomático para un int sin firmar. Su definición común es:

typedef unsigned int U32;

Pero la razón principal de su uso es poder controlar la definición real manualmente. Espero que esto ayude.

Respondido 13 Oct 15, 10:10

unsigned int no se garantiza que sea de 32 bits, por lo que tal typedef es realmente malo. - ChrisWue

sí, lanza un static_assert allí :) - Paulm

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.