我正在将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
错误。这该怎么解决?
这种类型是在C头文件<stdint.h>
中定义的,它是C++11标准的一部分,但不是C++03标准。根据该头文件的维基百科页面,它直到VS2010才可以在Visual Studio中使用。
与此同时,您可以通过添加typedef
将Microsoft的自定义整数类型映射到C所期望的类型来伪造自己的头文件版本。例如:
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */
__int32
。 - Ben Voigtu_int32_t
和uint32_t
不是同一种类型;其中一个在u
后面有一个额外的下划线。这似乎是一个单独的问题。 - templatetypedef#include <cstdint>
。这是自2011年以来C++标准的一部分。我遇到了相同的错误,解决方法是在文件中包含以下内容
#include <stdint.h>
在您的文件开头。
在msinttypes项目页面上有一个实现 - "该项目填补了Microsoft Visual Studio中stdint.h和inttypes.h的缺失"。
我没有使用过这个实现,但我在SO上看到其他人推荐它。
<Windows.h>
。
uint32_t
和其他精确宽度整数类型只属于C99和C++0x,所以较旧的编译器(如Visual C++ 2008及更早版本)没有这些类型。 - James McNellis