什么是u_int32_t?

14

可能是重复问题:
C语言中使用的数据类型

您好,我正在将代码从Linux移植到Visual C++。但是我遇到了不少错误。 u_int32_t是什么?我在Visual C++中找不到它。它只能在Linux中使用吗?在Visual C++中应该使用哪种类型? 谢谢!

Kevin

5个回答

15

C99头文件stdint.h定义了不依赖于体系结构或编译器的类型。无符号整数的含义可能不同(例如,在16比特系统上为16比特宽),但是stdint.h中的这些类型具有特定大小。

要么是额外的下划线在那里不小心滑过去了,要么是有人重新为某个库打了一遍字。如果是后者,请在自己的标头文件中包含stdint.h,然后在包含后确保typedef uint32_t u_int32_t


7

2

我不确定确切的类型,但根据名称,它看起来像是一个无符号32位整数。在Visual C++中对应的类型为unsigned int

还有其他的别名,但这个名称就可以了。


2

这是一个无符号的 int 数据类型,保证有32位。要使用它,您需要包含 stdint.h

我不确定最新版本的VC ++是否直接提供此数据类型。维基百科页面上有链接到各种可以与Microsoft编译器一起使用的实现(例如msinttypes)。

如果您确信默认的unsigned int类型始终为32位,则可以尝试将其替换为unsigned int,但是使用显式的32位数据类型更可取。


VC++ 2010(目前最新版本)确实提供了 stdint.h。但是 stdint.h 提供的标准名称是 uint32_t,而不是本问题中提到的 u_int32_t - Ben Voigt

1

关于u_int32_t我不确定,但uint32_t是根据C标准1999版的标准类型,来自<stdint.h>

Visual C++选择不采用C99,因此不支持该类型。如果您包含<windows.h>,则可以直接使用DWORD,它将具有相同的大小并且也是无符号的。


3
VC++ 2010提供了一个名为stdint.h的头文件,其中包含这些typedef。 - Ben Voigt
@Ben Voight - 我不知道那个。太棒了。+1。 - asveikau
我的意思是它提供了标准类型(int8_tuint8_t ... uint32_t)。它不提供 u_int32_t,如果我之前的评论让你误解了,很抱歉。 - Ben Voigt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接