我们什么时候应该使用stdint.h中定义的整数类型?

时间:2012-03-14 08:21:27

标签: c types

stdint.h定义具有指定宽度的整数类型。我们何时应该使用这些类型,例如uint32_t而不是unsigned int?是因为我们可以在不考虑底层机器的情况下获得所需的类型吗?

3 个答案:

答案 0 :(得分:4)

当您需要与其他系统通信并且想要确定数据的长度时。

例如:您将号码保存到磁盘。它在磁盘上有多长?对于unsigned int,响应是“它取决于编译器,操作系统......”。对于uint32_t,它是32位(“标准”架构上的4个字节)。

答案 1 :(得分:3)

当整数的大小和符号实际上很重要时。想象一下,你有一个提供uint32_t值的文件或套接字,你想要读取它(以便携方式)。只读unsigned int值可能是正确的,但也可能出错。

答案 2 :(得分:0)

在嵌入式开发中使用<stdint.h>(或制作自己的代理)非常常见。它使可变大小和内存使用更加明显,移植更容易。 我发现自己在使用C语言编写桌面软件时使用<stdint.h>,因为我已经习惯了嵌入式开发。考虑变量的大小也迫使我想到溢出的情况等。

对我而言,使用<stdint.h>定义类型只是干净的C,因为它使得所有内容更加可移植,并且源代码在其堆栈/堆分配中更加明确。承认,它在内存受限系统上更有意义,但我仍然认为这是一种很好的做法。