stdint.h
定义具有指定宽度的整数类型。我们何时应该使用这些类型,例如uint32_t
而不是unsigned int
?是因为我们可以在不考虑底层机器的情况下获得所需的类型吗?
答案 0 :(得分:4)
当您需要与其他系统通信并且想要确定数据的长度时。
例如:您将号码保存到磁盘。它在磁盘上有多长?对于unsigned int
,响应是“它取决于编译器,操作系统......”。对于uint32_t
,它是32位(“标准”架构上的4个字节)。
答案 1 :(得分:3)
当整数的大小和符号实际上很重要时。想象一下,你有一个提供uint32_t
值的文件或套接字,你想要读取它(以便携方式)。只读unsigned int
值可能是正确的,但也可能出错。
答案 2 :(得分:0)
在嵌入式开发中使用<stdint.h>
(或制作自己的代理)非常常见。它使可变大小和内存使用更加明显,移植更容易。
我发现自己在使用C语言编写桌面软件时使用<stdint.h>
,因为我已经习惯了嵌入式开发。考虑变量的大小也迫使我想到溢出的情况等。
对我而言,使用<stdint.h>
定义类型只是干净的C,因为它使得所有内容更加可移植,并且源代码在其堆栈/堆分配中更加明确。承认,它在内存受限系统上更有意义,但我仍然认为这是一种很好的做法。