我正在将代码从Linux C移植到Windows的Visual C ++。
Visual C ++不知道,#include <stdint.h>
所以我将其注释掉。
后来,我发现了很多这样的'uint32_t': identifier not found
错误。如何解决?
我正在将代码从Linux C移植到Windows的Visual C ++。
Visual C ++不知道,#include <stdint.h>
所以我将其注释掉。
后来,我发现了很多这样的'uint32_t': identifier not found
错误。如何解决?
uint32_t
和其他精确宽度的整数类型只有C99和C ++ 0x中的一部分,所以旧的编译器(如Visual C ++ 2008和更早版本)没有他们。
Answers:
此类型在C标头中定义,C标头<stdint.h>
是C ++ 11标准的一部分,但不是C ++ 03中的标准。根据标题上的Wikipedia页面,Visual Studio直到VS2010才提供。
同时,您可以通过添加typedef
s来伪造您自己的标头版本,该s将Microsoft的自定义整数类型映射到C期望的类型。例如:
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */
希望这可以帮助!
__int32
。
u_int32_t
并且uint32_t
不是同一类型;u
。之后有一个下划线。这似乎是一个单独的问题。
我有相同的错误,它已将其修复,包括文件中的以下内容
#include <stdint.h>
在文件的开头。
msinttypes项目页面上有一个可用的实现-“此项目填补了Microsoft Visual Studio中缺少stdint.h和inttypes.h 的麻烦 ”。
我没有这个实现的经验,但是我已经看到其他人对它的推荐。
在Windows上,我通常使用Windows类型。要使用它,您必须包含<Windows.h>
。
在这种情况下,uint32_t是UINT32或仅仅是UINT。
所有类型的定义都在这里:http : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa383751%28v=vs.85%29.aspx