令我惊讶的是,我刚刚发现从MS Visual Studio 2003开始就没有C99 stdint.h。我相信他们有他们的理由,但有没有人知道在哪里可以下载它?如果没有这个头文件,我就没有有用类型的定义,例如uint32_t等。
令我惊讶的是,我刚刚发现从MS Visual Studio 2003开始就没有C99 stdint.h。我相信他们有他们的理由,但有没有人知道在哪里可以下载它?如果没有这个头文件,我就没有有用类型的定义,例如uint32_t等。
原来你可以从以下网址下载MS版本的此标题:
https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h
这里可以找到一个便携的版本:
http://www.azillionmonkeys.com/qed/pstdint.h
感谢Software Rambling博客。更新: Visual Studio 2010和Visual C++ 2010 Express都有stdint.h
。它可以在C:\Program Files\Microsoft Visual Studio 10.0\VC\include
中找到。
std::
中使用的C++用户<cstdint>头文件。 - Adrian McCarthy只需自己定义。
#ifdef _MSC_VER
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
#include <stdint.h>
#endif
#define U64(u) (u##ui64)
,否则#define U64(u) (u##ULL)
。 - NiklasVisual Studio 2003 - 2008 (Visual C++ 7.1 - 9)并不声称兼容C99。 (感谢rdentato的评论。)
Boost库中包含了你所需要的类型的 cstdint.hpp头文件:http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp
<stdint.h>
的副本,而不是Boost头文件。 - jww微软不支持C99,并且没有宣布任何计划。我认为他们打算跟踪C++标准,但认为C已经过时,除了作为C++的子集。
在Visual Studio 2003及更高版本中,新项目默认设置为“编译为C++代码(/TP)”选项,因此任何.c文件都将被编译为C++。
另一个便携式解决方案:
POSH:可移植开源工具包
"POSH是一个简单、便携、易于使用、易于集成、灵活、开源的“工具包”,旨在使编写跨平台库和应用程序变得更加轻松,更易于创建和移植。"
http://poshlib.hookatooka.com/poshlib/trac.cgi
正如Brian Hook所描述并在书中使用的那样:
编写可移植代码:为多个平台开发软件的介绍
作者:Brian Hook
http://books.google.ca/books?id=4VOKcEAPPO0C-Jason
stdint.h
。 - Michael Burr