我正在尝试编译一个我下载的开源项目,该项目显然是用VC ++ 7.1编写的。
经过很多麻烦,作为C ++的新手,我设法下载并修复了项目使用的STLPort包含。但是,我得到了15,000个错误,抱怨某些类型没有定义。其中一些是:
u_int32_t
int64_t
u_int16_t
u_int8_t
经过一段谷歌搜索,我发现它们是在C99中添加的。我之前的其他开发人员已经设法使用VC编译它。我虽然使用VC 10。
该项目已经死了几年,所以我无法联系作者。
答案 0 :(得分:4)
Visual C ++编译器不支持大多数C99功能。
如果您想使用标准的固定宽度整数类型,您需要确保包含<cstdint>
并使用std::
或包含<stdint.h>
限定它们。
标准的固定宽度无符号类型名称为uint32_t
,uint16_t
和uint8_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文件并使用它们的更简单方法。