¿Cuál es la diferencia entre stdint.h y inttypes.h?

Si ninguno de ellos se utiliza, uint64_t no es reconocida, pero con cualquiera de ellos es un tipo definido.

  • inttypes.h #includes stdint.h.
InformationsquelleAutor mahmood | 2011-09-29

2 Comentarios

  1. 20

    Ver el artículo de la wikipedia para inttypes.h.

    Uso stdint.h para un conjunto mínimo de definiciones; uso inttypes.h si usted también necesita apoyo portátil para estos en el printf, scanf, et al.

    • Llegué a stackoverflow para aprender la diferencia entre stdint.h y inttypes.h después leer el artículo de wiki que me dice que (u)intN_t está disponible en ambos. Entonces, ¿cuál es la diferencia? Que debo incluir?
    • <inttypes.h> incluye <stdint.h> y añade algunas printf macros. Ver Mikko Östlund la respuesta a continuación.
  2. 139

    stdint.h

    La inclusión de este archivo es el «requisito mínimo» si quieres trabajar con el ancho entero tipos de C99 (es decir, «int32_t», «uint16_t», etc.).
    Si se incluye este archivo, usted va a obtener las definiciones de estos tipos de, de modo que usted será capaz de utilizar estos tipos de declaraciones de variables y funciones, y hacer operaciones con estos tipos de datos.

    inttypes.h

    Si incluir este archivo, usted va a conseguir todo lo que stdint.h proporciona (porque inttypes.h incluye stdint.h), pero también tendrá instalaciones para hacer printf y scanf (y «fprintf, «fscanf», y así sucesivamente.) con estos tipos de una manera portátil. Por ejemplo, usted obtendrá el «PRIu16» macro para que puedan printf un uint16_t entero como esta:

    #include <stdio.h>
    #include <inttypes.h>
    int main (int argc, char *argv[]) {
    
        //Only requires stdint.h to compile:
        uint16_t myvar = 65535;
    
        //Requires inttypes.h to compile:
        printf("myvar=%" PRIu16 "\n", myvar);  
    }
    • Gracias, que fue una gran respuesta (aunque yo no la pregunta original!). Para agregar a Mikko la respuesta, inttypes.h copias en stdint.h (a través de preprocesador #include). Al menos en mi sistema Linux (GCC 4.5.2 y similares).

Dejar respuesta

Please enter your comment!
Please enter your name here