0

我正在尝试编译我下载的一个开源项目,该项目显然是用 VC++ 7.1 编写的。

在经历了很多麻烦之后,作为 C++ 的新手,我设法下载并修复了项目使用的 STLPort 的包含。但是,我收到类似 15,000 个错误,抱怨某些类型未定义。其中一些是:

u_int32_t
int64_t
u_int16_t
u_int8_t

经过一番谷歌搜索,我发现它们是在 C99 中添加的。在我之前的其他开发人员已经设法使用 VC 编译它。我正在使用 VC 10。

该项目已经死了几年,所以我无法联系到作者。

4

3 回答 3

4

Visual C++ 编译器不支持大多数 C99 功能。

如果您想使用标准的固定宽度整数类型,您需要确保使用或 include来包含<cstdint>和限定它们。std::<stdint.h>

标准的固定宽度无符号类型名称是uint32_tuint16_tuint8_t(也就是说,和_之间没有)。当然,您可以根据需要对自己的类型进行 typedef(虽然您应该对新代码使用标准 typedef,但您可能需要自己的 typedef 才能与遗留代码互操作)。uint

于 2010-10-28T22:38:23.973 回答
3

在 Visual Studio 中为自己定义这些类型非常容易,因为它们提供了 __int(bitsize) 功能。

typedef __int64 int64_t;
typedef unsigned __int32 u_int32_t;
typedef unsigned __int16 u_int16_t;
typedef unsigned __int8 u_int8_t;
于 2010-10-28T22:39:55.517 回答
0

您需要安装兼容的 C99 编译器和库,并将 VC++10 环境指向这些。

但是我怀疑找到构建/制作文件并使用它们的更简单方法。

于 2010-10-28T22:39:18.463 回答