C99 stdint.h header and MS Visual Studio

令我惊讶的是,我刚刚发现,从 MS Visual Studio 2003开始,C99 stdint.h 就不见了。我相信他们有他们的理由,但有人知道我可以在哪里下载一份吗?没有这个头,我就没有有用类型的定义,比如 uint32 _ t 等等。

143182 次浏览

原来你可以从以下网站下载这个头的 MS 版本:

Https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h

在这里可以找到一个便携式的:

http://www.azillionmonkeys.com/qed/pstdint.h

多亏了 软件漫游s 的博客。

注意: Michael Burr在注释中提到的头的公共域版本可以作为归档副本 给你找到。更新的版本可以在 用于 libusb _ aah 的 Android 源代码树中找到。

Visual Studio 2003-2008(Visual C + + 7.1-9)并不声称与 C99兼容。(感谢 rdentato 的评论。)

你自己定义吧。

#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

Boost 包含 cstdint.hpp 头文件,其中包含您要查找的类型: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp

微软不支持 C99,也没有宣布任何计划。我相信他们打算跟踪 C + + 标准,但是认为除了作为 C + + 的一个子集之外,C 实际上已经过时了。

VisualStudio2003中以及更高版本中的新项目在默认情况下设置了“编译为 C + + 代码(/TP)”选项。C 文件将被编译为 C + + 。

另一种便携式解决方案:

POSH: 便携式开源工具

POSH 是一个简单、可移植、易于使用、易于集成、灵活、开放源码的“工具箱”,旨在使编写跨平台库和应用程序在创建和移植方面不那么繁琐

Http://poshlib.hookatooka.com/poshlib/trac.cgi

正如书中描述和使用的: 编写可移植代码: 为多平台开发软件的介绍 By Brian Hook 作者: Brian Hook Http://books.google.ca/books?id=4vokceappo0c

杰森

Update: Visual Studio 2010 and Visual C++ 2010 Express both have stdint.h. It can be found in C:\Program Files\Microsoft Visual Studio 10.0\VC\include