разница между stdint.h и inttypes.ч

в чем разница между stdint.h и inttypes.h?

Если ни один из них не используется, uint64_t не распознается, но с любым из них это определенный тип.

2 ответов


см. статью Википедии для inttypes.h.

использовать stdint.h для минимального набора определений; используйте inttypes.h если вам также нужна портативная поддержка для них в printf, scanf и др.


stdint.h

включение этого файла является "минимальным требованием", если вы хотите работать с целыми типами C99 заданной ширины (т. е." int32_t"," uint16_t " и т. д.). Если вы включаете этот файл, вы получите определения этих типов, чтобы вы могли использовать эти типы в объявлениях переменных и функций и выполнять операции с этими типами данных.

inttypes.h

Если вы включаете этот файл, вы будет все, что stdint.h обеспечивает (потому что inttypes.h включает stdint.ч), а вы также получите средства для выполнения printf и scanf (и " fprintf," fscanf", и так далее.) с этими типами в портативном пути. Например, вы получите макрос "PRIu16", чтобы вы могли распечатать целое число uint16_t следующим образом:

#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);  
}