VC ++ 10抱怨说很多类型都没有定义,C99

时间:2010-10-28 22:36:23

标签: c++ visual-c++ visual-c++-2010

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

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

u_int32_t
int64_t
u_int16_t
u_int8_t

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

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

3 个答案:

答案 0 :(得分:4)

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

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

标准的固定宽度无符号类型名称为uint32_tuint16_tuint8_t(即_u之间没有int {{1}})。当然,您可以根据需要键入自己的类型(虽然您应该使用标准的typedef来获取新代码,但您可能需要键入自己的类型以与旧代码进行互操作)。

答案 1 :(得分: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;

答案 2 :(得分:0)

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

但是我怀疑找到build / make文件并使用它们的更简单方法。