【问题标题】:What is u_int32_t? [duplicate]什么是 u_int32_t? [复制]
【发布时间】:2011-07-07 00:52:46
【问题描述】:

可能重复:
Datatypes used in C

嗨 我正在从 Linux 移植到 Visual C++。我发现了很多错误。 什么是 u_int32_t ? 我在 Visual C++ 中找不到它?它仅在 Linux 中可用吗?我应该在 Visual C++ 中使用哪种类型? 提前谢谢!!!

凯文

【问题讨论】:

    标签: c++ c visual-c++


    【解决方案1】:

    C99 标头stdint.h 定义了不依赖于体系结构或编译器的类型。 unsigned int 的含义可能不同(例如,在 16 位系统上为 16 位宽),但来自 stdint.h 的那些类型具有特定的大小。

    要么是额外的下划线意外滑入其中,要么是有人为某个库或其他什么重新输入了它们。如果是后一种情况,请包含您自己的一些标头,在该标头中包含stdint.h,并确保在包含后添加typedef uint32_t u_int32_t

    【讨论】:

      【解决方案2】:

      这些不太标准的名称似乎是由 BSD 引入的:http://lists.freedesktop.org/archives/release-wranglers/2004-August/000923.html

      【讨论】:

        【解决方案3】:

        我不完全确定确切的类型,但根据名称,它看起来像一个无符号 32 位整数。 Visual C++ 中对应的类型是 unsigned int

        还有其他别名,但这个名字就足够了。

        【讨论】:

          【解决方案4】:

          这是一个 int 数据类型,无符号保证为 32 位。要使用它,您需要包含stdint.h

          我不确定这是否可以直接在最新版本的 VC++ 中使用。维基百科页面包含与 Microsoft 编译器一起使用的各种实现的链接(例如 msinttypes)。

          如果您确定默认的 unsigned int 类型始终为 32 位,您可以直接用 unsigned int 代替它。但最好使用明确的 32 位数据类型。

          【讨论】:

          • VC++ 2010(目前是最新版本)确实提供了stdint.h。但是stdint.h 提供了标准名称uint32_t,而不是本问题中提到的u_int32_t
          【解决方案5】:

          不确定u_int32_t,但uint32_tstandard type according to the 1999 version of the C standard,来自<stdint.h>

          Visual C++ 已选择不采用 C99,因此那里不支持它。如果您包含<windows.h>,您可以只使用DWORD,它的大小相同且未签名。

          【讨论】:

          • VC++ 2010 提供了一个stdint.h 来提供这些类型定义。
          • @Ben Voight - 我不知道。凉爽的。 +1。
          • 我的意思是它提供了标准类型(int8_t, uint8_t ... uint32_t)。它不提供u_int32_t,如果我之前的评论表明它提供了,对不起。
          猜你喜欢
          • 2021-08-28
          • 2020-05-24
          • 2011-10-24
          • 2021-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多