可能是重复问题:
C语言中使用的数据类型
您好,我正在将代码从Linux移植到Visual C++。但是我遇到了不少错误。 u_int32_t是什么?我在Visual C++中找不到它。它只能在Linux中使用吗?在Visual C++中应该使用哪种类型? 谢谢!
Kevin
可能是重复问题:
C语言中使用的数据类型
您好,我正在将代码从Linux移植到Visual C++。但是我遇到了不少错误。 u_int32_t是什么?我在Visual C++中找不到它。它只能在Linux中使用吗?在Visual C++中应该使用哪种类型? 谢谢!
Kevin
C99头文件stdint.h
定义了不依赖于体系结构或编译器的类型。无符号整数的含义可能不同(例如,在16比特系统上为16比特宽),但是stdint.h
中的这些类型具有特定大小。
要么是额外的下划线在那里不小心滑过去了,要么是有人重新为某个库打了一遍字。如果是后者,请在自己的标头文件中包含stdint.h
,然后在包含后确保typedef uint32_t u_int32_t
。
这些略微不标准的名称似乎是由BSD引入的:http://lists.freedesktop.org/archives/release-wranglers/2004-August/000923.html
我不确定确切的类型,但根据名称,它看起来像是一个无符号32位整数。在Visual C++中对应的类型为unsigned int。
还有其他的别名,但这个名称就可以了。
这是一个无符号的 int
数据类型,保证有32位。要使用它,您需要包含 stdint.h。
我不确定最新版本的VC ++是否直接提供此数据类型。维基百科页面上有链接到各种可以与Microsoft编译器一起使用的实现(例如msinttypes)。
如果您确信默认的unsigned int
类型始终为32位,则可以尝试将其替换为unsigned int
,但是使用显式的32位数据类型更可取。
关于u_int32_t
我不确定,但uint32_t
是根据C标准1999版的标准类型,来自<stdint.h>
。
Visual C++选择不采用C99,因此不支持该类型。如果您包含<windows.h>
,则可以直接使用DWORD
,它将具有相同的大小并且也是无符号的。
stdint.h
的头文件,其中包含这些typedef。 - Ben Voigtint8_t
,uint8_t
... uint32_t
)。它不提供 u_int32_t
,如果我之前的评论让你误解了,很抱歉。 - Ben Voigt
stdint.h
。但是stdint.h
提供的标准名称是uint32_t
,而不是本问题中提到的u_int32_t
。 - Ben Voigt