可能重复:
Datatypes used in C
您好 我正在从Linux移植到Visual C ++。我发现了很多错误。 什么是u_int32_t? 我在Visual C ++中找不到它?它只在Linux中可用吗?我应该在Visual C ++中使用哪种类型? 在此先感谢!!!
凯文
答案 0 :(得分:14)
C99标头stdint.h
定义了不依赖于体系结构或编译器的类型。 unsigned int的含义可能不同(例如16位系统上的16位宽),但stdint.h
中的那些类型具有特定的大小。
要么额外的下划线意外地滑入那里,要么有人为某些图书馆或其他任何人重新输入它们。如果是后一种情况,请在您的标题中添加一些标题,包括stdint.h
,并确保在包含后typedef uint32_t u_int32_t
。
答案 1 :(得分:5)
这些不太标准的名称似乎是由BSD引入的:http://lists.freedesktop.org/archives/release-wranglers/2004-August/000923.html
答案 2 :(得分:2)
我不完全确定确切类型,但根据名称,它看起来像无符号32位整数。 Visual C ++中相应的类型是 unsigned int 。
还有其他别名,但这个名称就足够了。
答案 3 :(得分:2)
这是一个int
数据类型,无符号保证为32位。要使用它,您需要包含stdint.h。
我不确定这是否可以在最新版本的VC ++中直接使用。维基百科页面包含指向与Microsoft编译器一起使用的各种实现的链接(例如msinttypes)。
如果您确定默认的unsigned int
类型总是32位,那么您可以在其位置替换unsigned int
。但是最好使用显式的32位数据类型。
答案 4 :(得分:1)
不确定u_int32_t
,uint32_t
是standard type according to the 1999 version of the C standard,来自<stdint.h>
。
Visual C ++已经选择不采用C99,因此不支持它。如果您添加<windows.h>
,则可以使用DWORD
,其大小相同且无符号。