stdint.h和inttypes.h有什么区别?
如果没有使用它们,则无法识别uint64_t,但使用其中任何一个都是已定义的类型。
答案 0 :(得分:133)
如果要使用指定宽度的整数类型C99(即“int32_t”,“uint16_t”等),则包含此文件是“最低要求”。 如果包含此文件,将获得这些类型的定义,以便您可以在变量和函数的声明中使用这些类型,并使用这些数据类型执行操作。
如果包含此文件,将获取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。