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


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

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

2 60

2 ответа:

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

использовать 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);  
}