1

标头 stdint.h 如何在每台机器上将 u32 定义为 32 位?有人可以详细说明 stdint.h 为实现这一目标所做的过程吗?在哪里可以找到我的机器 (Windows 7) 的 stdint.h 文件?

4

2 回答 2

3

编译器工具链的 C 标准库的提供者将确保它对于该特定部署是正确的。据推测,他们被允许使用任何必要的手段来确保这种情况。它可以像知道将其 typedef 为 int 还是 long 一样简单。

于 2012-07-16T16:54:20.307 回答
2

stdint.h 在 C99 中(并且 2008 以下版本的 VC++ 仅实现 C89),因此要在 Win7 机器上安装此文件,您需要安装 VisualStudio 2010(或更高版本)。然后此文件位于 MSVS 安装的“VC\include\stdint.h”文件夹中。

MinGW(Win32 的 gcc 工具链)和 Cygwin(Windows 机器的 POSIX 层)也在其“include”目录中包含 stdint.h 文件。

对于您的问题: uintN_t 类型背后的“魔法”通常是使用条件编译来实现的。可能有一些预定义的符号(由编译器),如 Windows 上的 _WIN32 和 x64 目标的 _WIN64。

对于 2008 年前的 VisualStudio 版本,有一个单独的 stdint.h 实现:http://msinttypes.googlecode.com/svn/trunk/stdint.h

于 2012-07-16T16:57:55.407 回答