令我惊讶的是,我刚刚发现MS Visual Studio 2003向上缺少C99 stdint.h。我确定他们有他们的理由,但有谁知道我可以在哪里下载副本?如果没有这个标题,我就没有对uint32_t等有用类型的定义。
答案 0 :(得分:82)
事实证明,您可以从以下网址下载此标头的MS版本:
https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h
便携式可以在这里找到:
http://www.azillionmonkeys.com/qed/pstdint.h
感谢Software Rambling博客。
答案 1 :(得分:45)
自己定义一下。
#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
答案 2 :(得分:44)
更新: Visual Studio 2010 和 Visual C ++ 2010 Express 都有stdint.h
。它可以在C:\Program Files\Microsoft Visual Studio 10.0\VC\include
答案 3 :(得分:23)
Visual Studio 2003 - 2008(Visual C ++ 7.1 - 9)并不声称与C99兼容。 (感谢rdentato的评论。)
答案 4 :(得分:11)
Boost包含cstdint.hpp头文件,其中包含您要查找的类型:http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp
答案 5 :(得分:5)
微软不支持C99,也没有宣布任何计划。我相信他们打算跟踪C ++标准,但认为C有效地过时了,除非作为C ++的一个子集。
Visual Studio 2003及更高版本中的新项目默认设置了“编译为C ++代码(/ TP)”选项,因此任何.c文件都将编译为C ++。
答案 6 :(得分:4)
另一种便携式解决方案:
POSH:便携式开源线束
“POSH是一种简单,易用,易于使用,易于集成,灵活,开源的”线束“,旨在使编写跨平台库和应用程序的创建和移植变得更加繁琐。”< / p>
http://poshlib.hookatooka.com/poshlib/trac.cgi
如书中所述和使用的: 编写可移植代码:介绍为多个平台开发软件 布莱恩胡克 http://books.google.ca/books?id=4VOKcEAPPO0C
-Jason