stdint.h和inttypes.h之间的区别

时间:2011-09-29 12:02:15

标签: c uint64 stdint

stdint.h和inttypes.h有什么区别?

如果没有使用它们,则无法识别uint64_t,但使用其中任何一个都是已定义的类型。

2 个答案:

答案 0 :(得分:133)

stdint.h

如果要使用指定宽度的整数类型C99(即“int32_t”,“uint16_t”等),则包含此文件是“最低要求”。 如果包含此文件,将获得这些类型的定义,以便您可以在变量和函数的声明中使用这些类型,并使用这些数据类型执行操作。

inttypes.h

如果包含此文件,将获取stdint.h提供的所有内容(因为inttypes.h包含stdint.h),但也将获得执行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);  
}

答案 1 :(得分:17)

See the wikipedia article for inttypes.h.

使用stdint.h获取最小的定义集;如果你还需要printf,scanf等人的便携式支持,请使用inttypes.h。

相关问题