[英]VC++ 10 complains that a lot of types are not defined, C99
我正在尝试编译一个我下载的开源项目,该项目显然是用VC ++ 7.1编写的。
经历了很多麻烦之后,作为C ++的新手,我设法为该项目使用的STLPort下载并修复了包含内容。 但是,我收到类似15,000个错误的消息,抱怨某些类型未定义。 其中一些是:
u_int32_t
int64_t
u_int16_t
u_int8_t
经过一番谷歌搜索后,我发现它们已添加到C99中。 我之前的其他开发人员已设法使用VC进行编译。 我正在使用VC 10。
该项目已经死了几年了,所以我无法联系作者。
Visual C ++编译器不支持大多数C99功能。
如果要使用标准的固定宽度整数类型,则需要确保包含<cstdint>
并使用std::
限定它们的质量,或者包含<stdint.h>
。
标准的固定宽度无符号类型名称是uint32_t
, uint16_t
和uint8_t
(即, u
和int
之间没有_
)。 当然,您可以根据需要键入自己的类型(虽然您应该对新代码使用标准的typedef,但是您可能需要自己键入自己的typedef才能与遗留代码进行互操作)。
在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;
您需要安装兼容的C99编译器和库,并将VC ++ 10环境指向这些库。
但是我怀疑找到构建/制作文件并使用它们的更简单方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.